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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晋一峰 中级黑马   /  2014-8-6 14:17  /  910 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 晋一峰 于 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( );程序结果又如何?

2 个回复

倒序浏览
。。。要沉了啊   没人解答么?
回复 使用道具 举报
第一个:成员变量有基本类型和引用类型的。
                class Demo {
                        //基本类型
                        int x = 10;
                        //引用类型
                        Student s = new Student();
                }
       
                第二个:类的初始化过程
                        加载class文件
                        堆中开辟空间
                        变量的默认初始化
                        变量的显示初始化
                        构造代码块初始化
                        构造方法初始化

                第三个:遇到extends,就要知道,先初始化父类数据,然后初始化子类数据。
                        分层初始化。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马