首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 方法重寫與重載核心差異全解析

     編輯:Java 相關知識

一、方法重寫 — 多態的基石

定義

子類對父類可存取方法的實作進行重新編寫,方法簽名(名稱、參數列表、回傳類型)必須完全一致,俗稱「外殼不變,核心重寫」。

核心規則

  • 參數列表、回傳類型必須完全相同
  • 存取權限不能比父類更嚴格(public > protected > default > private)
  • 拋出的受檢異常不能新增或擴大範圍,可縮小或不拋出
  • final、static、private、建構子不可重寫
  • 同包可重寫非 private/final 方法;跨包僅可重寫 public/protected 非 final 方法

優勢

子類可依業務需求定義專屬行為,實現執行期多態(動態綁定)。

二、方法重載 — 靜態多態

定義

同一類別(或父子類)中,方法名稱相同但參數列表不同(個數、類型、順序),回傳類型、存取修飾符、拋出異常均可任意變化。

核心規則

  • 參數列表必須改變
  • 回傳類型、存取權限、異常宣告可任意變更
  • 不可僅靠回傳類型區分重載
  • 建構子也可重載

三、對比速查表

比較點重載重寫
參數列表必須修改絕對不能修改
回傳類型可修改絕對不能修改
異常可修改可減少/刪除,不可新增或擴大
存取權限可修改不能更嚴格(可放寬)
發生位置同類/父子類僅父子類
多態類型編譯期靜態綁定執行期動態綁定

四、常見陷阱

  • 以為加 @Override 就能重寫 → 編譯器會檢查簽名是否匹配
  • 嘗試重寫 static 方法 → 實為「隱藏」,非多態
  • 重載時參數順序不同但類型相同 → 合法重載,但易混淆,建議避免
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved