1、以下程序执行的结果是:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class
X{
Y y=
new
Y();
public
X(){
System.out.print(
"X"
);
}
}
class
Y{
public
Y(){
System.out.print(
"Y"
);
}
}
public
class
Z
extends
X{
Y y=
new
Y();
public
Z(){
System.out.print(
"Z"
);
}
public
static
void
main(String[] args) {
new
Z();
}
}
|
正确答案: C 你的答案: 空 (错误)
ZYXX
ZYXY
YXYZ
XYZX
初始化过程:
1.
初始化父类中的静态成员变量和静态代码块
;
2.
初始化子类中的静态成员变量和静态代码块
;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;
(1)初始化父类的普通成员变量和代码块,执行 Y y=new
Y();
输出Y
(2)再执行父类的构造方法;输出X
(3)
初始化子类的普通成员变量和代码块,执行 Y y=new
Y();
输出Y
(4)再执行子类的构造方法;输出Z
所以输出YXYZ