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

子類:

主函數:

當我創建子類Dog的
實例時,執行結果如下:

跟實例構造函數的調用順序剛好相反,所以創建子類實例時,其所有構造函數和變量的調用順序為:
子類靜態變量初始化>子類靜態構造函數>父類靜態變量初始化 > 父類靜態構造函數 > 父類實例變量初始化>父類實例構造函數 > 子類實例變量初始化>本身實例構造函數。