首頁 > Java > java教程 > 為什麼Java不允許`super.super.method()`?

為什麼Java不允許`super.super.method()`?

DDD
發布: 2024-12-26 20:42:11
原創
678 人瀏覽過

Why Doesn't Java Allow `super.super.method()`?

為什麼Java 限制存取Super.super.method()

在Java 中,語法super.super.method(); ,儘管存在於許多其他語言中。這個限制源自於Java對封裝的強調,確保子類別不能違反其父類別的行為。

封裝迫使子類別遵守其超類別定義的規則。假設我們有一個類別層次結構,其中包含一個父類別 (Items) 和兩個子類別(RedItems 和 BigRedItems)。 RedItems 強制它所包含的所有項目都必須是紅色的,而 BigRedItems 進一步限制它們必須是大的和紅色的。

在這種情況下,允許 super.super.add();會破壞封裝。子類別(NaughtyItems) 可以透過直接呼叫super.super.add() 來繞過RedItems 的紅色項限制;:

public class NaughtyItems extends RedItems {
    @Override
    public void add(Item item) {
        // I don't care if it's red or not. Take that, RedItems!
        super.super.add(item);
    }
}
登入後複製

這會違反RedItems 中的不變量,允許將任何顏色的項添加到NaughtyItems .

本質上是super.super.method();允許子類別繞過多個父類別的行為,破壞繼承的封裝原則。 Java 禁止這樣做,以確保子類別尊重其父類別的行為並維護結構良好的類別層次結構。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板