一个类的初始化会首先初始化静态代码块,然后初始化成员变量(成员变量有基本变量和引用变量),成员变量的初始化会首先进行默认初始化,然后是显示初始化,最后是构造方法初始化
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() {
//super
System.out.print(
"Z"
);
}
public
static
void
main(String[] args) {
new
Z();
}
}
- 初始化z,看到z有extends所以应该先初始化x;
- x初始化成员变量,初始化y;
- y初始化成员变量打印y;
- 回到x,打印x;
- 回到z,看到new y();
- 初始化y,打印语句;
- 执行构造方法,打印z;