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

© 王春涛 中级黑马   /  2014-7-26 21:29  /  953 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        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();
                }
        }

5 个回复

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

原代码没有x extends y。  结果也是yxyz
回复 使用道具 举报
代码能不能写的又规律点漂亮点
回复 使用道具 举报
王春涛 发表于 2014-7-26 22:09
原代码没有x extends y。  结果也是yxyz

我也运行了一下,的确不错,我刚才说的貌似不太准确,直接把x构造方法中super忽略就行了,没什么用,然后就是y初始化---x----y----z,:lol话说好纠结的题目。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马