"Grundkurs Programmieren in Java - (8. Auflage, 2018)"
2001-2018, Carl Hanser Verlag

Lösungsvorschlag zu Aufgabe 7.5 (Version 3.0)

(c) 2001-2018 D. Ratz, D. Schulmeister-Zimolong, D. Seese, J. Wiesenberger

Programmausgabe:

Katze
Fuchs
Maus
Maus
Ratte
Hund


Erklärung:

Die gegebenen Klassen lassen sich mit einem UML-Klassendiagramm wie folgt darstellen:

Klassendiagramm


Die pfeillosen Linien zwischen Hund und Maus bzw. Ratte ist eine sog. Assoziation, sie soll hier die "hat ein"-Beziehung darstellen.

Es ergibt sich folgender Ablauf:
  1. Der Konstruktor der Superklasse wird aufgerufen. Dies wird rekursiv wiederholt, so dass der Konstruktor der Klasse Katze zuerst ausgeführt wird
  2. Die Konstruktoren der Attribute werden in der Reihenfolge ihrer Deklaration aufgerufen, also zuerst Maus und dann Ratte (da Ratte aber von Maus erbt, wird vor dem eigentlichen Ratte-Konstruktor erst nochmals der Maus-Konstruktor aufgerufen.
  3. Zuletzt wird der Konstruktor der abgeleiteten Klasse (also Hund) aufgerufen


Quelltext (alle 5 Klassen in einer Datei): Hund.java