Greifen Sie auf Modifizierer in einer privaten statischen geschachtelten Klasse in Java zu

8

Ich habe eine "private static" geschachtelte Klasse in Java. Welche Bedeutung haben Zugriffsmodifikatoren für Felder und Methoden in dieser Klasse? Ich habe versucht, sowohl öffentliche als auch private ohne Auswirkungen auf meine Anwendung.

%Vor%     
Roman 02.11.2010, 06:01
quelle

2 Antworten

4

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.

Interessant lautet: Source1 , Quelle2

    
zengr 02.11.2010, 06:58
quelle
10

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.

    
ILMTitan 02.11.2010 14:59
quelle