Antwort auf: Aufgabe 85

EIDI-Crashkurs 2020 Aufgabe 85 Antwort auf: Aufgabe 85

#3438

Du hast es genau richtig erklärt. Bei den anderen Teilaufgaben ist es wie bei g). Z. B. bei k) wird versucht, eine Variable vom Typ I an eine Variable vom Typ C zuzuweisen. Der Compiler sieht nur diese statischen Typen und überprüft nicht, was tatsächlich (dynamisch) gespeichert wird. Eine Variable vom Typ I könnte zwar ein C (oder D) speichern (wie es hier der Fall ist), aber theoretisch (aus Compiler-Sicht) auch ein Objekt jedes anderen Typs der mindestens I ist (also jede Klasse, die I implementiert). Es könnte ja neben C noch eine Klasse F geben, die I implementiert. Die Zuweisung funktioniert daher immer nur dann, wenn der (statische) Typ der rechten Seite der Zuweisung mindestens so speziell ist wie der Typ der Variable, an die zugewiesen wird (linke Seite). Also kannst du an eine Variable vom Typ C nur C oder D zuweisen. An eine Variable vom Typ I kannst du C, D oder I zuweisen. Die rechte Seite muss also den gleichen Typ haben oder einen Typ, der in der Vererbungshierarchie darunter steht (aber nicht darüber)!