05.08.2013 Aufrufe

Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll ... - HSR-Wiki

Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll ... - HSR-Wiki

Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll ... - HSR-Wiki

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Geschachtelte Klassen 549<br />

Da für jede Oberflächenkomponente in der Regel eine eigenständige<br />

Ereignisbehandlung erfolgen muss – diese Behandlung<br />

aber nur für die einzelne Komponente verwendet werden kann –<br />

ist es sinnvoll, diese Ereignisbehandlung in einer lokalen Klasse<br />

zu kapseln.<br />

Einschränkungen für lokale Klassen<br />

• Lokale Klassen dürfen wie die Elementklassen keine als static deklarierten<br />

Datenfelder, Methoden oder Klassen definieren.<br />

• Lokale Klassen dürfen nicht den gleichen Namen wie die umschließende Klasse<br />

haben.<br />

• Die lokale Klasse darf in der Klassendeklaration keinen der Modifikatoren<br />

private, protected, public oder static verwenden. All diese Modifikatoren<br />

sind gebräuchlich für Elemente einer Klasse – eine lokale Klasse ist aber kein<br />

Element einer Klasse.<br />

15.3 Anonyme Klassen<br />

Anonyme Klassen sind lokale Klassen ohne Namen, von denen sofort bei der Klassendefinition<br />

ein Objekt erzeugt wird. Da die Klasse keinen Namen trägt, kann man<br />

nur ein einziges Exemplar der Klasse erzeugen. Anonyme Klassen können genauso<br />

wie lokale Klassen innerhalb von Instanzmethoden und Klassenmethoden leben.<br />

Anonyme Klassen werden innerhalb eines Ausdrucks definiert<br />

und instantiiert. Da eine anonyme Klasse keinen Namen<br />

hat, können auch keine Konstruktoren geschrieben werden.<br />

Um Objekte anonymer Klassen initialisieren zu können, wurde in Java 1.1 der nicht<br />

statische Initialisierungsblock eingeführt (siehe Kap. 10.4.3).<br />

Anonyme Klassen werden genau wie lokale Klassen oft von<br />

Adapterklassen abgeleitet oder implementieren eine Schnittstelle<br />

zur Ereignisbehandlung.<br />

Das folgende Beispiel zeigt das schon bekannte Anwendungsbeispiel eines Viewers,<br />

der Bilder anzeigen soll. Hierbei wird eine anonyme Klasse definiert, die eine Schnittstelle<br />

implementiert.<br />

// Datei: Viewer2.java<br />

interface ITypen<br />

{<br />

public boolean testTyp();<br />

}

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!