一.基本原則:
先加載靜態構造函數和靜態字段,后加載普通構造函數和普通字段;先加載基類再加載子類;
二.具體的加載順序:
父類靜態字段--->父類靜態構造函數--->子類靜態字段--->子類靜態構造函數--->父類實例字段--->
父類實例構造函數--->子類實例字段--->子類實例構造函數
同一類按聲明順序初始化,即同為實例字段,按順序執行
三.如果字段初始化器引用尚未初始化的字段,會得到默認值
class Example
{private int a = b + 1; // b此時為0private int b = 5;
}
避免在字段初始化器中引用其他尚未初始化的字段
復雜的初始化邏輯應該放在構造函數中
保持初始化順序簡單明了,避免循環依賴
理解這些順序規則對于正確初始化對象狀態非常重要,特別是在涉及繼承和復雜對象構造時.