EIDI-Crashkurs 2020 › Crashkurs-Aufgaben zu Polymorphie › Antwort auf: Crashkurs-Aufgaben zu Polymorphie
10.02.2020 um 18:02 Uhr
#3247
Es geht um den Aufruf a.f(this): a ist dynamisch nicht C sondern A!
thisist statischC, weil wir in der Klasse C sind, und dynamisch ebenfalls C, weil beim vorherigen Aufruf (c.f((C)c)) ein C-Objekt vor dem Punkt stand, d. h. wir operieren auf einem C-Objekt.- Nachdem wir also auf einem C-Objekt operieren, handelt es sich bei
aum das Attributades C-Objekts, das ursprünglich durchA a = new A()innerhalb des A-Kontruktors mitnew C(this)erzeugt wurde . Dort wirdthis(also während der Erzeugung von A das A-Objekt selbst) übergeben. Das C-Objekt speichert sich genau dieses A-Objekt in seinem Attributaab (mittelsthis.a = a), d. h. das hier verwendeteahat den dynamischen Typ A (und zwar genau das A-Objekt, das auch in dermain-Methode gespeichert wird).
Daher suchen wir in A eine Methode f(C), finden statisch f(B) und führen diese Methode auch aus.
