检验一下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;
}
}
子类
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;
}
}
父类运行结果图:
结论,静态代码块 > 构造代码块 > 构造函数。
子类运行结果图:
结论,父静态 > 子静态 > 父构造代码块 > 父构造函数 > 子构造代码块 > 子构造函数
简单点记录就是 静态 > 父类 > 子类。