Geschachtelte Klassen

Werbung
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
Herunterladen