标题: 程序执行流程 [打印本页] 作者: 小小瓶盖❤ 时间: 2014-1-16 17:44 标题: 程序执行流程 运行以下代码片段,输出结果是?( D )
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
谁能帮我分析一下吗?作者: 快乐的黑马 时间: 2014-1-16 18:52
这题考的是创建对象时构造函数初始化的问题:
首先要明确下面一点:子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每个子类构造内的第一行都有默认的语句super();
好了,你先的找到主函数,因为只有一条线程,new Z(),Z会访问父类构造函数,但父类先 Y b = new Y();所以打印是Y,然后构造函数内打印X;再然后执行本类里的代码,因为有 Y y = new Y();所以先打印Y,最后初始自己的构造函数,打印Z
综上的结果是 YXYZ作者: 小小瓶盖❤ 时间: 2014-1-16 20:57