Für ein Codierungsprojekt habe ich eine Klasse mit einer geschachtelten Klasse. Die verschachtelte Klasse ist innerhalb der gleichen äußeren Klasse unterklassifiziert. Die äußere Klasse soll einige Instanzen der verschachtelten Klasse enthalten, die sie anderen Instanzen der äußeren Klasse übergeben kann.Zugriff auf private Superklassenfelder mit dem Schlüsselwort super in einer Unterklasse
Die geschachtelte Unterklasse ermöglicht der äußeren Klasse den Inhalt zu ändern, während ihre Oberklasse den Inhalt zu lesen erlaubt und einige Methoden aufgerufen werden. Die Oberklassenobjekte werden somit an andere Objekte übergeben, um die äußeren Klassenobjekte in einer Kette zu verknüpfen.
Die Frage, die ich habe, betrifft die Zugriffsmodifikatoren. Hier ist ein minimalistisches Codebeispiel:
abstract class OuterClass {
protected class NestedSuperClass<T> {
private T data;
public NestedSuperClass (T t) {
this.data = t;
}
public T getOutput() {
return data;
}
}
protected class NestedSubClass<T> extends NestedSuperClass<T> {
public NestedSubClass (T t) {
super(t);
}
protected void setOutput(T t) {
super.data = t;
}
}
}
Wenn eine Dokumentation aufzublicken Ich war von der Fähigkeit verwirrt den privaten Bereich der übergeordneten Klasse zugreifen nirgendwo erwähnt. Gibt es eine Ressource, die erklärt, warum die Unterklasse das private Feld der Oberklasse auf diese Weise ändern darf?
Ich bin völlig in Ordnung mit dieser Arbeit. Ich habe auch bemerkt, dass es scheint mit Daten zu arbeiten, die als geschützt statt privat und nicht mit dem Super-Schlüsselwort markiert werden. Ich bin vor allem an Dokumentationen interessiert, die diese Fähigkeit des Super-Keywords erwähnen. Danke im Voraus.
Ich stimme diese Frage erneut zu öffnen, da es speziell die Verwendung von "Super" und privaten Feldzugriff anstelle einer allgemeinen inneren Klasse Accessibility – dkatzel
Ich stimme, um die Frage zu öffnen. Es scheint nicht mit der doppelten Frage verwandt zu sein. – nafas
Hinweis: ** synthetische ** Accessor-Methoden, die vom Compiler generiert werden – charlie