- 如果父類有靜態成員賦值或者靜態初始化塊,執行靜態成員賦值和靜態初始化塊
- 如果類有靜態成員賦值或者靜態初始化塊,執行靜態成員賦值和靜態初始化塊
- 將類的成員賦予初值(原始類型的成員的值為規定值,例如int型為0,float型為0.0f,boolean型為false;對象類型的初始值為null)
- 如果構造方法中存在this()調用(可以是其它帶參數的this()調用)則執行之,執行完畢后進入第7步繼續執行,如果沒有this調用則進行下一步。(這個有可能存在遞歸調用其它的構造方法)
- 執行顯式的super()調用(可以是其它帶參數的super()調用)或者隱式的super()調用(缺省構造方法),此步驟又進入一個父類的構造過程並一直上推至Object對象的構造。
- 執行類申明中的成員賦值和初始化塊。
- 執行構造方法中的其它語句。
最終的簡化順序版本是:
- 父類的靜態成員賦值和靜態塊
- 子類的靜態成員和靜態塊
- 父類的構造方法
- 父類的成員賦值和初始化塊
- 父類的構造方法中的其它語句
- 子類的成員賦值和初始化塊
- 子類的構造方法中的其它語句