Java: Theorie-Frage

...komplette Frage anzeigen

2 Antworten

In Java kann man mithilfe der Vererbung doch alle Methoden, Variablen usw. an eine Unterklasse weitergeben?

Durch Vererbung gibt Java Methoden und Instanzvariablen an Unterklassen weiter.

Wäre es rein theoretisch möglich eine Superklasse zu erstellen, welche einen beliebigen Listener implementiert, sodass alle Unterklassen auf diesen individuell zugreifen und je nach Zweck nutzen können? Wäre das sinnvoll?

Der „Listener“ gehört zu den sogenannten „Entwurfsmustern“. Wenn du Ereignisse „überwachen“ willst, mußt du dieses spezielle Ereignis in deinen Klassen mit dem Listener anmelden, der dich dann im gegebenen Fall auf dieses Ereignis aufmerksam macht. M.a.W. du musst diesen Listener immer wieder in den gewünschten Klassen anmelden.

Jede Klasse, die nicht „extended“ wird, wird implizit von der Klasse „java.lang.Object“ abgeleitet. In dieser Super-Klasse aller Klassen gibt es nur Objekte, die noch sehr rudimentäre Fähigkeiten haben: Erzeugen, kopieren, vergleichen, notify. Notify ist aber ein Observer und kein Listener …

Am besten auch noch mal die Basics im „Ullenboom“ checken: http://openbook.galileocomputing.de/javainsel/

Antwort bewerten Vielen Dank für Deine Bewertung
wolfgang1956 17.04.2014, 06:19

Danke für die HA!

0

ähm ja du kannst die Methoden in der abgeleiteten Klasse individuell überschreiben. Da alle Methoden bei Java (unsinnigerweise) virtuell sind, lässt sich das auch ohne weiteres machen.

wenn du den Kode der Superklasse dennoch vorher nutzen willst und du nur was ergänzen möchtest, dann musst du in der überschriebenen Methode die gleiche Methode der Superklasse aufrufen: super.meinListener();

Na klar kann das sinnvoll sein. Wenn man Beispielsweise sich aus einem Panel eine kleine Blink-LED basteln will, welche verschiedene Farben annimmt und drückbar sein soll. Dann kann man halt die 5-LED Klassen erstellen, welche alle von deiner Panel-Superklasse abgeleitet sind.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?