黑马程序员技术交流社区

标题: 关于子类与父类加载的流程问题 [打印本页]

作者: 晋一峰    时间: 2014-8-6 14:17
标题: 关于子类与父类加载的流程问题
本帖最后由 晋一峰 于 2014-8-6 22:45 编辑

昨天遇到了一个看程序写结果的题,对子类父类加载流程一直很模糊,求大神详解
class X {
        Y b = new Y( );
        X( ) {
        System.out.print("X");
        }
}
class Y {
        Y( ) {
        System.out.print("Y");
        }
}
public class Z extends X {
        Y y = new Y( );
        Z( ) {
          //@@@@  
        System.out.print("Z");
        }
        public static void main(String[ ] args) {
                new Z( );
        }
}
     程序执行的结果是YXYZ ,  求具体流程与解释,
     若在@@@@处加入   super( );程序结果又如何?
作者: 晋一峰    时间: 2014-8-6 19:18
。。。要沉了啊   没人解答么?
作者: lcycr    时间: 2014-8-6 20:12
第一个:成员变量有基本类型和引用类型的。
                class Demo {
                        //基本类型
                        int x = 10;
                        //引用类型
                        Student s = new Student();
                }
       
                第二个:类的初始化过程
                        加载class文件
                        堆中开辟空间
                        变量的默认初始化
                        变量的显示初始化
                        构造代码块初始化
                        构造方法初始化

                第三个:遇到extends,就要知道,先初始化父类数据,然后初始化子类数据。
                        分层初始化。





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