JAVA初始化順序

JAVA初始化順序
1、調用順序:
JAVA類首次裝入時,會對靜態成員變量或方法進行一次初始化,但方法不被調用是不會執行的,靜態成員變量和靜態初始化塊級別相同,非靜態成員變量和非靜態初始化塊級別相同。
先初始化父類的靜態代碼--->初始化子類的靜態代碼-->
(創建實例時,如果不創建實例,則後面的不執行)初始化父類的非靜態代碼--->初始化父類構造函數--->初始化子類非靜態代碼--->初始化子類構造函數
其他說明:
2 、類只有在使用New調用創建的時候纔會被JAVA類裝載器裝入
3、創建類實例時,首先按照父子繼承關係進行初始化
4、類實例創建時候,首先初始化塊部分先執行,然後是構造方法;然後從本類繼承的子類的初始化塊執行,最後是子類的構造方法
5、類消除時候,首先消除子類部分,再消除父類部分
實例:
        abstract class base




C:/java>java    initializeOrder
base static block
base.getNumber int50
base.getNumber int250
subclass static block
base.getNumber int100
base nonstatic block
100
base start
initializeOrder.draw 0
base end
base.getNumber int1001
base.getNumber int10
subclass nonstatic block

注意:如果註銷後面的

new initializeOrder(1000);

則輸出結果是:

base static block
base.getNumber int50
base.getNumber int250
subclass static block

這正好說明了上面給出的調用順序的正確性.

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