检验一下java的静态代码块、构造代码块、构造函数的调用顺序问题。java
父类函数
public class Father { private int tag = 1; public static String flag = "father"; public Father() { System.out.println("construct father"); } static { System.out.println("staic father block"); } { System.out.println("father block"); } public int getTag() { return tag; } public void setTag(int tag) { this.tag = tag; } }
子类this
public class Sun extends Father{ private int tag = 10; public static String flag = "sun"; public Sun(){ System.out.println("construct sun"); } static { System.out.println("static sun block "); } { System.out.println("sun block"); } public int getTag() { return tag; } public void setTag(int tag) { this.tag = tag; } }
父类运行结果图:spa
结论,静态代码块 > 构造代码块 > 构造函数。code
子类运行结果图:blog
结论,父静态 > 子静态 > 父构造代码块 > 父构造函数 > 子构造代码块 > 子构造函数get
简单点记录就是 静态 > 父类 > 子类。class