要想了解这个很简单只需要动手敲上几行代码即可
代码如下
class PartentClass {
{
System.out.println("PartentClass的语句块初始化");
}
PartentClass(){
System.out.println("PartentClass构造函数初始化--->"+"PartentConstructor");
}
static {
System.out.println("PartentClass的静态语句块初始化");
}
}
class ChildrenClass extends PartentClass{
{
System.out.println("ChildrenClass的语句块初始化");
}
ChildrenClass(){
System.out.println("ChildrenClass构造函数初始化--->"+"ChildrenConstructor");
}
static {
System.out.println("ChildrenClass的静态语句块初始化");
}
}
public class Hello {
public static void main(String[] args) {
ChildrenClass chidClass = new ChildrenClass();
}
}
运行结果如下
PartentClass的静态语句块初始化
ChildrenClass的静态语句块初始化
PartentClass的语句块初始化
PartentClass构造函数初始化—>PartentConstructor
ChildrenClass的语句块初始化
ChildrenClass构造函数初始化—>ChildrenConstructor
总结
存在继承的情况下,初始化顺序为:
父类(静态语句块)
子类(静态语句块)
父类(普通语句块)
父类(构造函数)
子类(普通语句块)
子类(构造函数)