标题: 这道题选什么,为什么? [打印本页] 作者: aohn1117 时间: 2015-11-22 23:38 标题: 这道题选什么,为什么? 20.运行以下代码片段,输出结果是?( )
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();
}
}
A. Z
B. YZ
C. XYZ
D. YXYZ作者: 隔壁马良 时间: 2015-11-23 00:56
B?求解作者: yuanjun52306 时间: 2015-11-26 23:51
C吧。子类继承父类,先调用父类的构造函数,所以先输出X作者: Camwly 时间: 2015-11-27 09:04
运行出来是D不过不知道为什么作者: Myth、骞 时间: 2015-11-27 11:12
解析:
public class Z extends X {里面 的 Y y = new Y()的这一部分 称为 构造代码块,
作用:给对象 进行初始化,
所以 说,new 对象时,它会 执行,且 优先于构造函数,so: 第一个就是Y