Antwort auf: Zusatzaufgabe: Polymorphie mit Attributen

EIDI-Crashkurs 2020 Zusatzaufgabe: Polymorphie mit Attributen Antwort auf: Zusatzaufgabe: Polymorphie mit Attributen

#3440

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 Cs). 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 aA. Das aC 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).