檢驗一下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