Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:casting:aufgabe12:loesungen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


klassen2:casting:aufgabe12:loesungen:start [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +== 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:
 +<code learnj>
 +   Katze k1 = h;
 +   h.schreibeName();
 +</code>
 +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().