黑马程序员技术交流社区

标题: 输出什么结果呢? 为什么? [打印本页]

作者: 王春涛    时间: 2014-7-26 21:29
标题: 输出什么结果呢? 为什么?
        class X{
                Y b = new Y();
                X() {
                        super();
                        System.out.print("X");
                }
        }
        class Y {
                int a = 19;
                Y() {
                        System.out.print("Y");
                }
        }
        public class Z extends X {
                Y y = new Y();
                Z() {
                        super();
                        System.out.print("Z");
                }
                public static void main(String[] args) {
                        new Z();
                }
        }


作者: HPU--spring87    时间: 2014-7-26 21:51
你代码好像错了,x extends y,     YXYZ,你就是想知道Y是干什么的吧?你就把他当个变量需要初始化就行了,Z继承X,开始肯定Z里面y,先初始化,然后下面是z的初始化,这个小心super,就是x初始化后,初始化z,但是x初始化又跟z一样,也有super,所以是y--x,总的就是y---x----y----z
作者: ztw    时间: 2014-7-26 21:57
YXYZ,原因Z:首先Z继承了X就有X中的属性以及会调用X中的构造函数。

作者: 王春涛    时间: 2014-7-26 22:09
HPU--spring87 发表于 2014-7-26 21:51
你代码好像错了,x extends y,     YXYZ,你就是想知道Y是干什么的吧?你就把他当个变量需要初始化就行了,Z ...

原代码没有x extends y。  结果也是yxyz
作者: 0小菜鸟0    时间: 2014-7-26 22:12
代码能不能写的又规律点漂亮点
作者: HPU--spring87    时间: 2014-7-26 22:22
王春涛 发表于 2014-7-26 22:09
原代码没有x extends y。  结果也是yxyz

我也运行了一下,的确不错,我刚才说的貌似不太准确,直接把x构造方法中super忽略就行了,没什么用,然后就是y初始化---x----y----z,:lol话说好纠结的题目。




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