在java語言中嫉晶,當實例化對象時,對象所在類的所有成員變量首先要進行初始化鲫凶,只有所有類成員完成初始化后,才會調(diào)用對象所在類的構(gòu)造函數(shù)創(chuàng)建對象衩辟。
java程序的初始化一般遵循3個原則(優(yōu)先級依次遞減):
①靜態(tài)對象(變量)優(yōu)先于非靜態(tài)對象初始化螟炫,其中,靜態(tài)對象只初始化依次艺晴,而非靜態(tài)對象可能會初始化多次昼钻。
②父類優(yōu)先于子類進行初始化
③按照成員變量的定義順序進行初始化。即使變量定義散布于方法定義之中封寞,它們依然在任何方法(包括構(gòu)造函數(shù))被調(diào)用之前初始化然评。
具體順序如下:
父類靜態(tài)變量
父類靜態(tài)代碼塊
子類靜態(tài)變量
子類靜態(tài)代碼塊
父類非靜態(tài)變量
父類非靜態(tài)代碼塊
父類構(gòu)造函數(shù)
子類非靜態(tài)變量
子類非靜態(tài)代碼塊
子類構(gòu)造函數(shù)