黑马程序员技术交流社区
标题:
求这个小程序的输出结果?
[打印本页]
作者:
乐峰
时间:
2012-7-22 14:02
标题:
求这个小程序的输出结果?
本帖最后由 聂峰 于 2012-7-22 16:31 编辑
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();
}
}
这个程序怎么执行的?输出结果是什么?
作者:
朱烈葵
时间:
2012-7-22 14:32
YXYZ ,new Z 因为Z继承了X 所以出现要去父类X那 初始化,但是父类第一行又是初始化Y所以又去Y哪初始化, Y 出来了,Y初始化完毕,继续自己的初始化打印X,现在初始化自己的Z类但是第一行出现了初始化Y所以又去Y哪初初始化了一次,然后就是Z了所以就产生了 YXYZ。
作者:
全海波
时间:
2012-7-22 14:50
步骤.jpg
(44.31 KB, 下载次数: 36)
下载附件
2012-7-22 14:50 上传
作者:
王龙彪
时间:
2012-7-22 14:52
package cn.heima;
class X
{
Y b = new Y();//第3步,先初始化类中的成员变量
X()//第5步,调用构造方法,打印了X
{
System.out.print("X");
}
}
class Y
{
Y()
{
System.out.print("Y");//第4步,被new X()调用,打印了Y //第7步,被new Z()调用,打印了Y
}
}
public class Z extends X
{
Y y = new Y();//第6步,调用super()结束后,初始化本类变量
Z()
{
System.out.print("Z");//第8步,执行构造方法,打印了Z
}
public static void main(String[] args)//第1步,main函数入口
{
new Z();//第2步,初始化 Z 对象,调用父类构造方法
}
}
复制代码
所以输出结果是:YXYZ
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2