EIDI-Crashkurs 2020 › Zusatzaufgabe: Polymorphie mit Attributen › Antwort auf: Zusatzaufgabe: Polymorphie mit Attributen
Wenn du b.a.a.foo()
hättest, dann benötigst du den statischen und dynamischen Typ von b.a.a
, um die Methode foo()
aufzurufen. Dazu gehen wir von links nach rechts: b
ist statisch B
und dynamisch B
, also suchen wir in unserem B
-Objekt erstmal ein Attribut a
, um b.a
zu bestimmen. Dieses Attribut a
muss aus B
(oder einer Oberklasse von B
) kommen, welches wir hier finden (das ist das einzige a in dem B
-Objekt). b.a
ist somit statisch B
, dynamisch C
(das obere der beiden C
s). Wir suchen also in dem oberen C
-Objekt ein Attribut a
, um b.a.a
zu bestimmen. Dieses Attribut a
muss aus B
(oder einer Oberklasse von B
) kommen, welches wir hier finden – das ist das Attribut a
A. Das a
C sehen wir nicht, da der statische Typ B
ist. Der statische Typ von b.a.a
ist somit B
, der dynamische C
(das untere der beiden).