Frage zu Polymorphieaufgabe Klausur SS2013

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.

Frage zu Polymorphieaufgabe Klausur SS2013
Hallo Zusammen,

ich habe eine Frage zu der Polymorphieaufgabe der SS2013 Klausur, anbei findet ihr ein Foto vom UML Diagramm.
Wieso kommt bei nachfolgender Zeile “ist unverdaulich” raus? Müsste es nicht “dauert mehrere Stunden sein”? Vodka ist der dynamische Typ und verdauen eine Instanzmethode, nimmt man da nicht die Methode in der Klasse die besser passt?

Trinkbar tv = new Vodka();

System.out.println(tv.verdauen(1));

Danke schon mal!

Attachment:
Unbenannt.JPG: https://fsi.cs.fau.de/unb-attachments/post_164399/Unbenannt.JPG


den richtigen Typ muss man anschauen, einmal int, einmal long.
und nur eine der beiden Methoden überschreibt die im Interface


Ist es nicht egal, ob die Methode die aus dem Interface überschreibt?
Es ist doch eine Instanzmethode und müsste dynamiisch aufgelöst werden…


Die aufzurufende Funktion wird statisch vom Compiler mittels des statischen Typen festgestellt (wo die liegt, also in welcher Klasse diese implementiert ist, ist dann aber Sache des dynamischen Typen). Für den Compiler ist die verdauen-Methode mit dem int überhaupt nicht sichtbar (weil ja nicht im Trinkbar-Interface), deswegen wird die mit dem long-Parameter ausgewählt. Würde es die Methode mit int-Parameter im Trinkbar-Interface geben, dann würde diese ausgewählt werden.

1 „Gefällt mir“

Danke!