首頁 >Java >java教程 >為什麼 Java 中不允許使用「super.super.method();」?

為什麼 Java 中不允許使用「super.super.method();」?

DDD
DDD原創
2024-12-23 11:13:091048瀏覽

Why is `super.super.method();` Not Allowed in Java?

為什麼是 super.super.method(); Java中禁止?

使用super.super.method();由於封裝問題,在 Java 中是被禁止的。封裝旨在防止繞過父類別的行為。

雖然有時繞過自己類別的行為(在同一方法內)是合理的,但不要繞過父類的行為至關重要。考慮以下類別層次結構:

  • Collection:任何項目集合的基底類別
  • RedCollection:表示紅色項目集合的子類別
  • BigRedCollection:表示 RedCollection的子類別大紅色項目的集合

定義以下內容是合乎邏輯的方法:

  • Collection#add(Item):將項目加入集合。
  • RedCollection#add(Item):確保新增的項目為紅色的重寫方法。
  • BigRedCollection#add(Item):重寫方法,確保新增的項目很大且紅色。

這確保子類別遵守其父類所施加的約束。

但是,如果允許super.super.add(),惡意的NaughtyCollection 子類別可能會繞過RedCollection 的紅色項目要求:

  • NaughtyCollection#add(Item):忽略紅色項目要求,添加任何項目。

這會破壞 RedCollection 建立的不變量,創建一個可能不是紅色的項目集合。

因此,super.super Java 中禁止 .method() 呼叫以維護封裝並強制執行類別行為。

以上是為什麼 Java 中不允許使用「super.super.method();」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn