public class Fu {
static {
System.out.print(1);
}
public Fu() {
System.out.print(2);
}
}
public class Zi extends Fu {
static {
System.out.print("a");
}
public Zi() {
System.out.print("b");
}
}
public class demo {
public static void main(String[] args) {
Fu fu = new Zi();
fu = new Zi();
}
}
当父类与子类都有静态代码块和构造函数的时候,执行顺序如下:
父类静态代码块 > 子类静态代码块Java虚拟机加载类时,就会执行该块代码。
父类构造函数 > 子类构造函数 (先有父亲,后有孩子)
如果是多级继承关系的话,高层的父类首先执行,然后依次递减
总结:静态优先执行,父类优先于子类执行
静态代码块是在JVM加载类的时候执行的,而且静态代码块执行且仅执行一次
2.