- 初始化父类中的静态成员变量和静态代码块。
- 初始化子类中的静态成员变量和静态代码块。
- 初始化父类的普通成员变量和代码块,再执行父类的构造方法。
- 初始化子类的普通成员变量和代码块,再执行子类的构造方法。
PS:
- 若无指明情况下,子类的构造方法默认情况下先隐式调用父类的无参构造。
- 静态块只调用一次。
【静态块调用】
静态块按代码顺序加载,并且静态变量直接初始化 = 静态变量声明 + 在静态块中初始化。
class TestStatic {
private static int i = 13;
static {
i = 12;
}
static public void a(){
System.out.println(i);
}
}
class TestStatic {
static {
i = 12;
}
private static int i = 13;
static public void a(){
System.out.println(i);
}
}
输出分别为 12 和 13。
private static int i = 13;
可以拆解为:
private static int i;
static {
i = 13;
}