Aufgaben:
  1. Entferne das Kommentarzeichen // am Beginn der Zeile 6 bzw. 10. Welche Fehlermeldung zeigt der Compiler an? Warum tut er das?
  2. 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().