重載與覆蓋是 Java 多態的兩大基石,本文從語法規則、使用場景、核心區別到 JVM 底層動態綁定機制全維度解析。
定義:同一類中,方法名相同、參數列表不同(類型/個數/順序),與返回值類型無關。
規則:
定義:子類繼承父類,重新實現父類非 final、非 static、非 private 方法,實現運行時多態。
使用場景:父類功能不滿足子類業務需求,需定制化實現。
鐵律:
| 維度 | 重載 | 覆蓋 |
|---|---|---|
| 關系層級 | 同一類內部(水平) | 父子類之間(垂直) |
| 方法關係 | 多方法共存 | 一對一替換 |
| 參數列表 | 必須不同 | 必須相同 |
| 調用綁定 | 編譯期靜態綁定 | 運行期動態綁定 |
| 多態體現 | 編譯時多態 | 運行時多態 |
當調用 Base base = new Derive(); base.test(); 時:

這就是多態「編譯看左邊,運行看右邊」的底層實現:方法表索引固定,運行期根據實際對象類型解析具體實現。