Zwei Arten verschachtelter Klassen: 1. Statisch (geschachtelte Klasse) und 2. Nicht-statisch (auch innere Klasse genannt)
Nun kann die Outer-Klasse MyList
auf alle Member der inneren Klasse Node
zugreifen, aber Sie verwenden tatsächlich die Zugriffsbezeichner für die Member der Klasse Node
(geschachtelte Klasse), wenn Sie Einschränkungen von eine externe Klasse, die darauf zugreift.
Da es sich um eine geschachtelte Klasse handelt, kann auf Node
unabhängig vom Zugriffsmodifizierer auf MyList<T>
zugegriffen werden. Da es sich um eine private geschachtelte Klasse handelt, ist nichts, das zuerst in Node
deklariert wurde, außerhalb von MyList<T>
sichtbar.
Der Fall, in dem der Zugriffsmodifikator von Bedeutung sein kann, sind also Methoden, die eine Superklassenmethode überschreiben (z. B. toString()
). Sie können die Sichtbarkeit einer überschriebenen Methode nicht reduzieren. toString()
muss immer öffentlich deklariert werden, damit die Klasse kompiliert werden kann.
Es sollte auch beachtet werden, dass der Compiler beim Zugriff auf private Member durch die äußere Klasse eine synthetische Methode erstellt (ich glaube an den Paketumfang). Diese synthetische Methode ist nur in der .class-Datei der geschachtelten Klasse sichtbar.
Tags und Links java class methods static access-modifiers