這是一道經典的阿里巴巴校招面試題:給定父子類包含靜態/非靜態變量、靜態/非靜態代碼塊、構造器、靜態/實例方法,實例化子類時,System.out.println 的輸出順序是什麼?通過實戰 Demo 徹底理清 JVM 類初始化機制。
父類 B、子類 A extends B、啟動類 ClassLoading。每個類包含:
| 特性 | 靜態方法 | 實例方法 |
|---|---|---|
| 調用方式 | 類名直接調用 / 實例調用 | 必須實例化後調用 |
| 執行時機 | 類加載後可用 | 對象創建後可用 |
運行 new A() 後,控制台輸出完美印證上述順序。掌握這套邏輯,不僅能應付面試,更能在複雜繼承體系中精準控制初始化行為,避免隱蔽 Bug。