黑马程序员技术交流社区
标题:
这题输出结果是什么啊
[打印本页]
作者:
小方的sunshine
时间:
2015-3-28 18:53
标题:
这题输出结果是什么啊
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();
}
}
作者:
Mr.南郭
时间:
2015-3-28 20:00
结果是YXYZ
作者:
谢鸿
时间:
2015-3-28 20:42
赞一个!!!
作者:
hamesksk
时间:
2015-3-28 20:56
YXYZ应该没错
作者:
leonard
时间:
2015-3-28 21:19
输出结果是YXYZ。
作者:
hhh233
时间:
2015-3-28 22:17
YXYZ 先父类 貌似 Y y = new Y(); 要先于构造函数
作者:
复仇的撒旦
时间:
2015-3-28 22:21
YXYZ没错的
作者:
luoyu1530
时间:
2015-3-28 22:23
YXYZ。new一个匿名Z。Z继承了X,所以先进入X的构造函数,但是new了一个Y的对象,所以进入Y 中,打印一次Y,然后返回X,执行打印X,执行完X的类之后,Z执行Z的类,Z的类中又创建了Y的对象,所以执行Y类,打印Y,最后才执行一次Z,打印Z,结果YXYZ
作者:
xiaotian741
时间:
2015-3-29 18:51
全是正解
作者:
natsu647
时间:
2015-3-29 20:34
YXYZ,手动测一下就可以了啊。
作者:
Grady
时间:
2015-3-29 21:16
不懂为什么构造方法优先于对象
作者:
浅步调
时间:
2015-3-30 00:13
这道题应该主要是考察继承。
我们分析一下函数运行步骤:main函数中有创建匿名Z对象,运行Z函数,而Z函数继承X,那么在Z中会有隐式的super()函数,先加载父类X中的方法,在X的构造函数当中创建Y类对象,就先运行Y函数,因此最终打印输出Y X
运行完父类,子类运行。在Z函数中创建也有创建Y类对象,运行Y函数,最后再运行Z()方法,
因此最终打印结果为:Y X Y Z
作者:
hui1130
时间:
2015-3-30 11:31
主函数是程序的人口,一步一步的分析, YXYZ
作者:
qsmaxmin
时间:
2015-3-30 18:29
YXYZ。。。。
作者:
xj刘博
时间:
2015-3-31 13:17
我自己运行了一遍,结果输出是:YXYZ
作者:
tubao1991
时间:
2015-3-31 13:54
结果为YXYZ,考点有二:1、继承中的this()与super() 2、理解 A a=new A() 与构造方法的启用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2