黑马程序员技术交流社区

标题: 所谓的继承中的复写? [打印本页]

作者: shdosh    时间: 2015-8-21 19:56
标题: 所谓的继承中的复写?
我们所谓的复写,在内存中真的是子类把父类的方法覆盖了,内存中就没有父类汇总方法了吗?
我的看法是,不是这样的,例如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. }
复制代码
大家的看法如何。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2