10 Implementieren einer Listenerklasse
10 Implementieren einer ListenerklasseImplementieren Sie eine Listenerklasse zum Behandeln von Mausklicks.
Benutzen Klassen aus dem Java API um diese Aufgabe zu lösen.
Siehe Diagramm:
Implementieren Sie die Klasse MeinMausListener. Die Klasse soll auf die Ereignisse MousePressed und MouseReleased reagieren.
Welche Klasse bzw. Schnittstelle wählen Sie um den Implementierungsaufwand minimal zu halten?
Wählen Sie den besten Methodenkopf (ankreuzen):.
-
public class MeinMausListener extends MouseMotionListener
-
public class MeinMausListener implements MouseMotionListener
-
public class MeinMausListener extends MouseListener
-
public class MeinMausListener implements MouseListener
-
public class MeinMausListener extends MouseAdapter
-
public class MeinMausListener implements MouseAdapter
-
public class MeinMausListener extends EventListener
-
public class MeinMausListener implements EventListener
Welche andere Option ist die nächstbeste, aber suboptimal?
Warum ist diese Option suboptimal?
Niveau | 2 |
Schwierigkeitsgrad | mittel |
Zeit | 2+2+2 Minuten |
Antwort zu Frage 9: Innere und anonyme Klassen
Man kann sie direkt in der Klasse implementieren die sie exklusiv benötigen.
Dadurch benötigt man weniger Klassen.
Man belegt den Namensraum des Pakets nicht unnötig mit Klassennamen.
Man kann auf die Variablen und Methoden der umgebenden Klasse/Objekt zugreifen.
- 4954 views
Fehlt nach der "divide:
Fehlt nach der "divide: geschafft" nicht "divide: after"? Bei der 2.54 steht es noch.
Nein, leider nicht
Sie haben haben sich das sehr genaue angeschaut. Gute Sache!
Durch das Werfen (Kommando throw) der IllegalArgumentException wird die Methode divide() abgebrochen da diese Ausnahme nicht in der Methode gefangen wird. "Divide after" wird nicht mehr erreicht.
Das Hinterhältige diese Aufgabe besteht darin, dass die Sonderregel "finally Blöcke werden immer ausgeführt" zum tragen kommt.
"divide: geschafft" wird also noch ausgeführt obwohl das Laufzeitsystem auf dem schnellsten Weg die Methode divide() verlassen möchte.
Ihre Frage hat eine gute Detaildiskussion angeregt. Danke!
Bei Antwort zu Frage 9 im
Bei Antwort zu Frage 9 im letzten Satz muss das "auch" zu einem "auf" geändert werden.
Danke, wurde verbessert.
Gut beobachtet.