A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shdosh 中级黑马   /  2015-8-21 19:56  /  375 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们所谓的复写,在内存中真的是子类把父类的方法覆盖了,内存中就没有父类汇总方法了吗?
我的看法是,不是这样的,例如Zi extends Fu,new Zi()创建子类对象时,子类和父类都加载进内存,在方法区中,是两块不同的空间,并且会在堆内存中有父类和子类的内存区域,所以才会super引用可以调用Fu中的方法,虽然并没有创建Fu的对象。
代码:
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Zi z = new Zi();
  6.                 z.getNum();
  7.                 Fu f = new Zi();
  8.                 f.getNum();

  9.         }
  10. }

  11. class Fu
  12. {
  13.         int num = 2;
  14.         void getNum(){
  15.                 System.out.println("Fu num == "+num);       
  16.         }
  17. }

  18. class Zi extends Fu
  19. {
  20.         int num = 4;
  21.         void getNum(){
  22.                 System.out.println("Zi num == "+num);
  23.                 super.getNum();
  24.         }
  25. }
复制代码
大家的看法如何。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马