Was sind zwei Unterschiede zwischen einer inner (nested) class und einer ‚normalen‘ public class.?

1 Antwort

Eine öffentliche Klasse (Schlüsselwort »public«) ist von außen einsehbar. Das bedeutet, dass andere Klassen auf diese zugreifen können.

Die sogenannten inneren Klassen wiederum sind, wie du bereits in der Frage angegeben hast, »nested«, also innerhalb einer anderen Klasse »verwurzelt«. Im Gegensatz zu öffentlichen Klassen sind innere Klassen ausschließlich innerhalb der sie umgebenden Klassen verfügbar. Egal, ob man eine innere Klasse öffentlich oder privat deklarieren würde (unabhängig davon, ob das vom Compiler unterstützt wird), wäre diese nur von der äußeren Klasse erreichbar.

Vergleichbar ist dies mit der Sichtbarkeit von globalen und lokalen Variablen. Während globale Variablen überall innerhalb der aktuellen Klasse verfügbar sind, können lokale Variablen außerhalb ihres Kontextes nicht erreicht werden (z.B. wie bei einer Schleife). In diesem Vergleich sind die öffentlichen Klassen wie die globalen Variablen und die inneren Klassen wie die lokalen Variablen. Aber: In diesem Vergleich geht es ausschließlich um die Sichtbarkeit!

Siehe auch den entsprechenden Abschnitt aus der Java-Insel zum Thema innere Klassen, Interfeaces und Enumerationen.

Woher ich das weiß:Studium / Ausbildung