根据牛客网题目稍微改变验证一下JAVA中父子类的构造函数、静态代码块的执行顺序
代码如下:
<span style="font-size:18px;">class B extends Object运行结果:
{
static //父类静态块
{
System.out.println("Load B static");
}
//父类非静态块
{
System.out.println("Load B");
}
public B() //父类构造函数
{
System.out.println("Create B");
}
}
class A extends B
{
static //子类静态块
{
System.out.println("Load A static");
}
//子类非静态块
{
System.out.println("Load A");
}
public A() //子类构造函数
{
System.out.println("Create A");
}
}
public class TestClass {
public static void main(String[] args) {
new A();
}
}
</span>
所以,执行顺序:
父类静态代码块->子类静态代码块->父类非静态代码块->父类构造函数->子类非静态代码块->子类构造函数