Aufgaben

3. Nimm in Zeile 8 das Casting weg, schreibe also Hund h2 = t;. Was passiert? Warum?

4. Wenn wir ungerechtfertigt casten, vertraut uns der Compiler dann? Probiere es aus, indem Du die Zeile 5 ersetzt durch ((Katze)t).miaue();. Was passiert? Warum?

5. Verändert das Casten durch den Term (Katze)t das Objekt, auf das t zeigt von einem Tier-Objekt zu einem Katze-Objekt? Begründe Deine Antwort!


Lösung zu Aufgabe 3:

Der Compiler meldet: „Der Term vom Typ Tier kann der Variable vom Typ Hund nicht zugewiesen werden.“. Einer Variable einer Oberklasse können Objekte einer Unterklasse zugewiesen werden, aber nicht anders herum.

Lösung zu Aufgabe 4:

Zur Compilezeit geschieht nichts, der Computer „vertraut“ uns. Der Fehler wird aber zur Laufzeit entdeckt. Der Computer meldet dann, dass ein Objekt vom Typ Hund nicht nach Katze gecastet werden kann.

Lösung zu Aufgabe 5:

Das Casten (Katze)t geht nur, wenn t auf ein Objekt der Klasse Katze oder einer Unterklasse davon zeigt. Dieses Objekt wird beim Casten nicht verändert, sondern ist schon ein Katze-Objekt!