Heim >Java >javaLernprogramm >Warum erlaubt Java „super.super.method()' nicht?
Warum Java den Zugriff auf Super.super.method() einschränkt
In Java ist die Syntax super.super.method(); ist nicht erlaubt, obwohl es in vielen anderen Sprachen vorhanden ist. Diese Einschränkung ergibt sich aus Javas Schwerpunkt auf der Kapselung, um sicherzustellen, dass Unterklassen das Verhalten ihrer übergeordneten Klassen nicht verletzen können.
Die Kapselung zwingt Unterklassen dazu, sich an die von ihren Oberklassen definierten Regeln zu halten. Angenommen, wir haben eine Klassenhierarchie mit einer übergeordneten Klasse (Items) und zwei Unterklassen (RedItems und BigRedItems). RedItems erzwingt, dass alle darin enthaltenen Elemente rot sein müssen, während BigRedItems sie weiter auf große und rote Elemente beschränkt.
In diesem Szenario wird super.super.add(); würde die Kapselung zerstören. Eine Unterklasse (NaughtyItems) könnte die RedItems-Beschränkung für rote Elemente umgehen, indem sie super.super.add(); direkt aufruft:
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); } }
Dies würde die Invariante in RedItems verletzen und ermöglichen, dass Elemente jeder Farbe zu NaughtyItems hinzugefügt werden .
Im Wesentlichen super.super.method(); Ermöglicht Unterklassen, das Verhalten mehrerer übergeordneter Klassen zu umgehen, wodurch die Kapselungsprinzipien der Vererbung untergraben werden. Java verbietet dies, um sicherzustellen, dass Unterklassen das Verhalten ihrer übergeordneten Klassen respektieren und gut strukturierte Klassenhierarchien beibehalten.
Das obige ist der detaillierte Inhalt vonWarum erlaubt Java „super.super.method()' nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!