Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
— |
glossar:geschachtelt_klasse [2017/09/26 10:20] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== geschachtelt (Klasse) ====== | ||
+ | //engl.:// **nested class** | ||
+ | ===== Bedeutung ====== | ||
+ | Eine Klasse heißt in Java geschachtelt (engl. nested), wenn sie innerhalb der Deklaration einer anderen Klasse deklariert ist: | ||
+ | * als Komponente (ähnlich einem Attribut), | ||
+ | * als lokale Klassen (ähnlich einer lokalen Variablen) | ||
+ | * als anonyme Klassen bei der Objekterzeugung. | ||
+ | |||
+ | Ist eine Klasse nicht geschachtelt, nennen wir sie global (engl. top-level). | ||
+ | |||
+ | Java unterscheidet statische und innere Klassen. | ||
+ | |||
+ | Geschachtelte Klassen heißen statisch, wenn sie mit dem Modifikator static deklariert sind. | ||
+ | |||
+ | Statische Klasse haben die gleiche Bedeutung wie globale Klassen. Allerdings ergeben sich andere Sichtbarkeits- und Zugriffsbereiche. | ||
+ | * Geschachtelte Klassen können als privat deklariert werden, so dass sie außerhalb der umfassenden Klasse nicht verwendet werden können. | ||
+ | * Geschachtelte Klassen können auf private Attribute und Methoden der umfassenden Klasse zugreifen. | ||
+ | |||
+ | Geschachtelte Klasse, die nicht statisch sind, heißen innere Klassen. | ||
+ | |||
+ | Sei K eine Klasse und INN eine direkte innere Klasse von K. Dann bekommt jedes INN-Objekt eine Referenz auf das K-Objekt, in deren Kontext es erzeugt wurde. | ||
+ | |||
+ | ===== Bemerkungen ===== | ||
+ | * Die Zugriffs- und Sichtbarkeitsregeln im Zusammenhang mit geschachtelten Klassen sind recht komplex. | ||
+ | * Zugreifbare geschachtelte Klassen können über zusammengesetzte Namen außerhalb der umfassenden Klasse angesprochen werden (z.B. SLinkedList2.SEntry). | ||