Übungsblatt Aufgabe 7.3

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Übungsblatt Aufgabe 7.3
Haloo hab mal ne Frage zu der Übungsaufgabe.

an Stelle Nr. 6, warum wir dhier “konkretes umschalten” ausgegeben? müsste nicht die geerbte methode “abstraktes umschalten” ausgeführt werden? liegt es daran das der statische Typ ein interface ist und dieses interface nicht von abstrakteampel erbt? daher die methode für konkretealternativeampel in dem moment nicht bekannt ist?


Der Grund ist, dass die gegebene Instanzmethode umschalten() dynamisch gebunden ist.


aber warum wird nicht die Methode von AbstrakteAmpel geerbt? Auch andere instanzmethoden in der Aufgabe sind doch dynamisch gebunden, diese führen aber trotzdem die geerbte methode auf, wie z.B. Nr. 1, 4, 8.

Ich versteh nicht warum konkreteAlternativeAmpel nicht von AbstrakteAmpel erbt.

Edit: HJmm also ich versteh es so, das ein Objekt nur Zugriff auf die methoden hat die dem statischen typ bekannt sind. da dem statischen Typ sowohl das Interface Ampel als auch die abstrakteAmpel nicht bekannt ist. Kennt auch der Dynamische Typ die methoden der Abstrakten Ampel nicht.

Ich habe mal zum Spaß das Interface AlternativeAmpel mit Ampel erweitert, und siehe da jetzt wird die Methode aus abstrakteAmpel genutzt. Ich weiß nicht ob du das mit dynamischer Bindung gemeint hast? Das wäre doch eigentlich eher das Schlagwort Typsicherheit "zitat von Folie: Es dürfen nur MEthoden aufgerufen werden, die schon beim statischen Typ von m(Oberklasse Medium) verfügbar sind?(Folie 8-88)


Es können nur Methoden des statischen Typs aufgerufen werden. Du kannst dir also den statischen Typen anschauen (AlternativeAmpel) und zunächst entscheiden, welche Methode aufgerufen wird. In diesem Fall ist das umschalten(long zeit). Danach musst du schauen, ob auf dem Weg vom statischen Typen zum dynamischen Typen die Methode überschrieben wird. In diesem Fall wird die Methode in der Klasse KonkreteAlternativeAmpel überschrieben.