Geschachtelte Klassen Christian Schamott 1 / 26 Java – Geschachtelte Klassen Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2 / 26 1 Java – Geschachtelte Klassen Elementklasse Christian Schamott 3 / 26 Java – Geschachtelte Klassen Lokale Klasse Christian Schamott 4 / 26 2 Java – Geschachtelte Klassen Anonyme Klasse Christian Schamott 5 / 26 Java – Geschachtelte Klassen Statisch geschachtelte Klasse Christian Schamott 6 / 26 3 Java – Geschachtelte Klassen Gemeinsamkeiten Innerhalb einer Klasse definiert Keine Namensraumbeeinflussung in Paketen Zugriff innere Klasse über Namensraum äußerer Klasse Innere und äußere Klassen greifen wechselseitig auf Methoden/Datenfelder zu (Ausnahme statisch geschachtelte Klassen) Kontrolle über Sichtbarkeit innerer Klassen Christian Schamott 7 / 26 Java – Geschachtelte Klassen Elementklasse Christian Schamott 8 / 26 4 Java – Geschachtelte Klassen Elementklasse Tritt in Form von Objekten auf Bestandteil von Objekten/Klassen Zugriffsschutz private (nur in äußerer Klasse) protected (Paket) public (Klassen anderer Pakete) default Christian Schamott 9 / 26 Java – Geschachtelte Klassen Elementklasse Objekt Elementklasse nur möglich, wenn Objekt umschließende Klasse existent wechselseitiger Zugriff aus Methoden auf Methoden/Datenfelder Christian Schamott 10 / 26 5 Java – Geschachtelte Klassen Elementklasse - Beispiele Initialisierung Zugriff auf Methoden/Datenfelder Sichtbarkeit Methoden Datenfelder Christian Schamott 11 / 26 Java – Geschachtelte Klassen Lokale Klasse Christian Schamott 12 / 26 6 Java – Geschachtelte Klassen Lokale Klasse Deklaration in Methoden Sichtbar nur im definierten Block Keine Zugriffsmodifikation Unterscheidung in lokale Klassen in Instanzmethoden Klassenmethoden Christian Schamott 13 / 26 Java – Geschachtelte Klassen Lokale Klasse - Instanzmethoden Zugriff auf Instanzmethoden und Instanzvariablen des umschließenden Objekts Zugriff auf Klassenmethoden und Klassenvariablen der umschließenden Klasse Christian Schamott 14 / 26 7 Java – Geschachtelte Klassen Lokale Klasse - Klassenmethoden Zugriff auf Klassenmethoden und Klassenvariablen der umschließenden Klasse Christian Schamott 15 / 26 Java – Geschachtelte Klassen Lokale Klasse Zugriff auf final deklarierte lokale Variablen final deklarierte Übergabeparameter Compiler: lokale Kopie in Form privater Instanzvariablen bei Konstruktoraufruf Wichtig: final Variablen vor lokaler Klasse definieren Christian Schamott 16 / 26 8 Java – Geschachtelte Klassen Lokale Klasse - Einschränkung Nicht als static deklarieren Datenfelder Methoden Klassen Nicht gleichen Namen, wie äußere Klasse Keine Modifikatoren Christian Schamott 17 / 26 Java – Geschachtelte Klassen Lokale Klasse - Beispiele Deklaration Unterscheidung in Zugriffen von Lokalen Klassen in Instanzmethoden Lokalen Klassen in Klassenmethoden Zugriff auf final Variablen Christian Schamott 18 / 26 9 Java – Geschachtelte Klassen Anonyme Klasse Christian Schamott 19 / 26 Java – Geschachtelte Klassen Anonyme Klasse Lokale Klassen ohne Namen Bei Klassendefinition wird Objekt erzeugt In Instanzmethoden und Klassenmethoden (wie lokale Klassen) Können von anderen Klassen ableiten und deren Methoden überschreiben Java 1.1: nicht statischer Initialisierungsblock Christian Schamott 20 / 26 10 Java – Geschachtelte Klassen Anonyme Klasse - Einschränkung Nicht als static deklarieren Datenfelder Methoden Klassen Keine Konstruktoren Lokale Klassen vorziehen, wenn mehrere Instanzen der Klasse erzeugt werden Christian Schamott 21 / 26 Java – Geschachtelte Klassen Anonyme Klasse - Beispiele Klassendefinition Ableiten von Klassen erben geerbte Methoden überschreiben Christian Schamott 22 / 26 11 Java – Geschachtelte Klassen Statisch geschachtelte Klasse Christian Schamott 23 / 26 Java – Geschachtelte Klassen Statisch geschachtelte Klasse Statische Top-Level-Klasse Wie Elementklasse definiert, aber Schlüsselwort static Kein Bezug zu äußerer Klasse Kein äußeres Objekt notwendig Zugriff nur auf statische Eigenschaften der äußeren Klasse Christian Schamott 24 / 26 12 Java – Geschachtelte Klassen Statisch geschachtelte Klasse Ansprache über ÄußereKlasse.InnereKlasse Klassen, die in Schnittstellen geschachtelt sind, sind statische Klassen (ohne explizites static) Christian Schamott 25 / 26 Java – Geschachtelte Klassen Statisch geschachtelte Klassen - Beispiele Deklaration Existenz ohne äußeres Objekt Kein Bezug zu äußerer Klasse Christian Schamott 26 / 26 13