静态代码块和构造块和构造方法的执行顺序
单个类的执行顺序: 静态代码块随类加载执行–>构造快–>构造方法
父子类的执行顺序: 父类的静态代码块–>子类的静态代码块–>父类构造块–>父类构造方法–>子类构造块–>子类构造方法
父类:
public class Father {
public static String fa = “FATHER_jvm”;
public Father() {
System.out.println(“我是Father父类的无参构造”);
}
{
System.out.println(“我是Father父类的构造块”);
}
static {
System.out.println(“我是父类Father的静态代码块。。”);
}
}
子类:
public class Son extends Father {
public static String so = “so_JVM”;
public Son() {
System.out.println(“我是子类son的无参构造”);
}
{
System.out.println(“我是子类son的构造块”);
}
static {
System.out.println(“我是子类Son的静态代码块。。”);
}
}
测试结果:
main方法执行–》new Son();
我是父类Father的静态代码块。。
我是子类Son的静态代码块。。
我是Father父类的构造块
我是Father父类的无参构造
我是子类son的构造块
我是子类son的无参构造
main方法执行–》new Father();
我是父类Father的静态代码块。。
我是Father父类的构造块
我是Father父类的无参构造