黑马程序员技术交流社区

标题: 一个关于子父类继承的问题 [打印本页]

作者: li2622480    时间: 2015-12-9 14:03
标题: 一个关于子父类继承的问题
class X{
        Y y=new Y();
        public X(){
                System.out.print("X");
        }
}
class Y{
        public Y(){
                System.out.print("Y");
        }
}
public class Z extends X{
        Y y=new Y();
        public Z(){
                System.out.print("Z");
        }
        public static void main(String[] args) {
                new Z();
        }
}
大家帮忙看看这个题是什么答案,学得不扎实,不会做了。

作者: 李永佳    时间: 2015-12-9 15:19
答案是YYXZ
作者: cc3441251    时间: 2015-12-9 15:56
1,new Z();会先去看它的构造方法, 但是它的构造方法第一行是有一个隐式的super(),所以回去访问父类classX,而父类的属性会先初始化,所以Y y=new Y();会执行,所以先输出Y;
2,父类成员初始化完成后,会执行父类的构造函数,所以第二输出X;
3,父类初始化完成后,回来执行本类的成员变量初始化Y y=new Y(),所以会输出Y
4,执行本类构造函数,输出Z
所以应该是YXYZ   我也不太确定是这样,请楼下大神继续指正
作者: wei_john    时间: 2015-12-9 17:31
口诀:父静子静,父构子构




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