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
!
this
ist 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
a
um das Attributa
des 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 Attributa
ab (mittelsthis.a = a
), d. h. das hier verwendetea
hat 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.