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

Java 重載、覆寫與隱藏:三大核心機制差異徹底解析

     編輯:Java 程式設計入門

重載

  • 同類別中,方法名相同,參數列表不同(型別、個數、順序至少一異)。
  • 回傳值、拋出異常、存取修飾符不能作為重載依據(匿名呼叫會產生歧義)。
  • main 方法亦可重載。

覆寫

  • 子類別重寫父類別實例方法,方法名、參數列表完全相同(參數不可為子類型)。
  • 「兩同兩小一大」:回傳型別、拋出異常 ⊆ 父類別;存取修飾符 ⊇ 父類別。
  • 限制:實例方法不可覆寫靜態方法,靜態方法不可覆寫實例方法(編譯錯誤) — 不可交叉覆寫。

隱藏

  • 父子類別擁有同名靜態方法或同名欄位(含靜態/實例欄位)。
  • 形式上父類別成員「消失」,實際仍存在。
  • 靜態繫結:依宣告型別決定呼叫哪個版本,不受 RTTI(執行期型別識別)影響。
  • 欄位只能隱藏,不能覆寫;欄位可交叉隱藏(實例隱藏靜態、靜態隱藏實例皆合法)。

隱藏 vs 覆寫:關鍵差異表

特性覆寫隱藏
繫結時機動態(執行期)靜態(編譯期)
父類別參考指向子物件呼叫子類別方法呼叫父類別方法/欄位
RTTI 影響受約束不受約束
適用對象實例方法靜態方法、所有欄位

特殊規則補充

  • final 欄位可被隱藏,但不可重新指派(引用型別仍可修改物件內部狀態)。
  • final 方法不可覆寫,可重載。
  • final 類別不可被繼承。
  • private 方法隱含 final,不可被覆寫(子類別同名方法視為新方法)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved