1. 程式人生 > >關於類中靜態、非靜態、構造方法的執行順序

關於類中靜態、非靜態、構造方法的執行順序

幾大原則

  一、靜態成員變數(Static)

 1、靜態成員變數為類變數,所有物件共享同一記憶體空間

2、靜態成員變數的宣告和定義僅在首次載入類時執行一次

3、首次載入類時首先對所有靜態成員變數根據型別預設賦初值,然後再對有右值的附右值

二、靜態初始塊

1、靜態初始化塊僅在首次載入類時執行一次

······多個靜態成員變數與靜態始化快參照出現順序先後執行······

三、動態成員變數

1、動態成員變數定義在每次例項化物件時在建構函式之前執行

四、動態初始化塊

1、動態初始化塊在每次例項化物件時在建構函式之前執行 

 ······多個動態成員變數與動態初始化塊參照出現順序先後執行······

總結:總的來說,在不涉及繼承的前提下,當首次載入類時,按照如下順序執行

1、按照出現順序先後執行靜態成員變數定義與靜態初始化塊

2、按照出現順序先後執行動態成員變數定義與動態初始化塊

3、執行建構函式

再次例項化物件時只執行第2、3步即可

············成員變數與定義與初始化塊先於建構函式執行·········

五、當涉及到繼承時,按照如下順序執行

1、執行父類的靜態成員變數定義與靜態初始化塊,執行子類的靜態成員變數定義與靜態初始化塊

2、執行父類的非靜態成員變數定義與動態初始化塊,執行父類構造方法

3、執行子類的非靜態成員變數定義與動態初始化塊,執行子類構造方法

另:父類構造方法中用到的方法如果已被子類重寫,那麼在構造子類物件時在呼叫父類建構函式中使用子類重寫的方法