Aufgaben:
- Entferne das Kommentarzeichen // am Beginn der Zeile 6 bzw. 10. Welche Fehlermeldung zeigt der Compiler an? Warum tut er das?
- Nach Zeile 10 wird folgendes Programm ergänzt:
Katze k1 = h; h.schreibeName();
sind diese Anweisungen zulässig? Falls „nein“: Warum nicht? Probiere sie aus, indem Du sie ins Beispiel oben einfügst!
Lösung zu Aufgabe 1:
Der Compiler zeigt folgenden Fehler an:
„Der Typ besitzt keine Methode mit dem Bezeichner belle.“
Das tut er, weil t eine Variable vom Typ Tier ist und die Klasse Tier keine Methode belle besitzt. Dass das Objekt, auf das t zeigt, ein Hund-Objekt ist (und sehr wohl eine Methode belle besitzt), weiß der Compiler nicht.
Lösung zu Aufgabe 2:
Katze k1 = h;
ist nicht zulässig, da h eine Variable der Klasse Hund ist. Diese kann nicht nach Katze gecastet werden, da Katze keine Unterklasse von Hund ist.
h.schreibeName(); ist zulässig, da h eine Variable der Klasse Hund ist. Diese erbt von der Klasse Tier und besitzt daher eine Methode schreibeName().