一、結論: 1.實例構造函數與靜態構造函數執行順序 一、初始化順序(依次是靜態變數、靜態構造函數、實例變數、實例構造函數) 二、初始化次數(靜態的都只會初始化一次) 三、初始化時機(使用類引用任何靜態成員之前對或者首次實例化類時會調用靜態構造函數,通過靜態構造函數初始化類級別的項,即靜態欄位。非靜態 ...
一、結論: 1.實例構造函數與靜態構造函數執行順序 一、初始化順序(依次是靜態變數、靜態構造函數、實例變數、實例構造函數) 二、初始化次數(靜態的都只會初始化一次) 三、初始化時機(使用類引用任何靜態成員之前對或者首次實例化類時會調用靜態構造函數,通過靜態構造函數初始化類級別的項,即靜態欄位。非靜態的則要在創建對象的時候才初始化); 2.創建子類實例時,其所有構造函數和變數的調用順序為: 子類靜態變數初始化>子類靜態構造函數>父類靜態變數初始化 > 父類靜態構造函數 > 父類實例變數初始化>父類實例構造函數 > 子類實例變數初始化>本身實例構造函數。 二、例子: 父類: 子類: 主函數: 當我創建子類Dog的實例時,執行結果如下: 跟實例構造函數的調用順序剛好相反,所以創建子類實例時,其所有構造函數和變數的調用順序為: 子類靜態變數初始化>子類靜態構造函數>父類靜態變數初始化 > 父類靜態構造函數 > 父類實例變數初始化>父類實例構造函數 > 子類實例變數初始化>本身實例構造函數。