黑马程序员技术交流社区

标题: 子类继承父类在内存中的加载顺序 [打印本页]

作者: dede668    时间: 2014-4-21 21:47
标题: 子类继承父类在内存中的加载顺序
今天我同学问我一个问题,我在这里和大家分享一下自己的理解,不对的地方请大家多指教
  1. class X
  2. {       
  3.         Y b=new Y();
  4.         X(){
  5.                 System.out.print("X");
  6.         }       
  7. }
  8. class Y
  9. {
  10.         Y(){
  11.                 System.out.print("Y");
  12.         }
  13. }
  14. public class Demo extends X
  15. {       
  16.         Demo(){
  17.                 System.out.print("Z");
  18.         }
  19.         Y y=new Y();
  20.         public static void main(String[] args){
  21.                 new Demo();
  22.         }
  23. }
复制代码

在这里,子类继承父类,当new 一个子类时候,因为子类Demo继承父类X所以子类在加载到堆中时候会为父类留一段空间,先进行的是父类X的成员变量初始化Y b=new Y();所以Y加载到堆中,调用Y的空参构造,先打印了一个Y,父类X成员变量Y b=new Y();初始化完毕,会有个super直接指向父类X的方法区,因为子类调用的是父类的空参构造所以打印一个X,子类Demo再进行成员变量的初始化,然后是Y y=new Y();进行初始化,又为Y开辟一个空间,调用Y的空参构造,有打印了Y,然后执行到Demo的空参构造输出语句。
作者: 许庭洲    时间: 2014-4-24 21:31
值得学习ing!
作者: Asura    时间: 2014-5-9 15:16
顶一个!




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