父类HelloA
public class HelloA {
static {System.out.println("static A");}
{System.out.println("common code div A");}
public HelloA() {
System.out.println("HelloA");
}
}
子类HelloB
public class HelloB extends HelloA {
static { System.out.println("static B");}
{System.out.println("common code div B");}
public HelloB() {
System.out.println("HelloB");
}
public static void main(String[] args) {
System.out.println("start");
new HelloB();
new HelloB();
System.out.println("end");
}
}
执行结果
解释:静态代码块,只执行一次。先执行父类,后执行子类。执行完后再执行构造方法(普通代码块编译的时候会自动放到构造函数里的最前面去)
结论:
执行顺序:静态代码块(全局只执行一次)->普通代码块->构造方法