package test01;
class Persion {
public Persion(){
show(); // 第四调用(它会调用子类覆写过的 show() 方法)
}
public void show(){
System.out.println("Persion show");
}
{ // 第三调用
System.out.println("Persion's no static block");
}
static{ // 第一调用
System.out.println("Persion's static block");
}
}
public class Child extends Persion{
public Child(){
show(); // 第六调用(它会调用子类的 show() 方法)
}
public void show(){
System.out.println("Child show");
}
{ // 第五调用
System.out.println("Child's no static block");
}
static{ // 第二调用
System.out.println("Child's static block");
}
public static void main(String[] args){
new Child();
}
}
运行结果:
Persion's static block
Child's static block
Persion's no static block
Child show
Child's no static block
Child show
PS:所有类的 static 块会首先调用,其次调用 普通块,然后调用构造。