java靜態代碼塊、構造方法、構造塊的執行順序

1、static修飾的東西都是屬於類一級別的,當類加載時會順序加載類變量、構造代碼塊以及類方法。

2、在子類創建對象(實例化)時先加載父類static代碼再去加載子類的static代碼,也反映出了子類和父類的加載順序。

3、構造塊的執行的優先級要大於構造函數的。

4、在子類創建對象時會調用父類的無參構造方法。

下面是一個測試demo:

public class Test {
	static String str ="test"; 
	String name;
	public Test(){
		System.out.println("父類構造方法");
	}
	static{
		System.out.println("父類靜態代碼塊");
		if ("test".equals(str)){
			System.out.println("順序加載");
		}
	}
	{
		System.out.println("父類構造塊");
	}
	public static void main(String[] args) {
		//實例化一個SubClass
		new SubClass();
	}

}
class SubClass extends Test{
	SubClass(){
		System.out.println("子類構造方法");
	}
	static{
		System.out.println("子類靜態代碼塊");
	}
	{
		System.out.println("子類構造塊");
	}
}
執行結果:

父類靜態代碼塊
順序加載
子類靜態代碼塊
父類構造塊
父類構造方法
子類構造塊
子類構造方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章