Polymorphie |
18.07.2015, 07:38 | Auf diesen Beitrag antworten » | |||||
gg_ | Polymorphie Meine Frage: Guten morgen, ich habe ein Java-Code, die ich aber leider nicht so ganz verstehe.
Was ich nicht verstehe ist, warum in der 3. Zeile die Methode aus der Klasse Kleinefigur aufgerufen wird? Kann mir das jmd. erklären? Hängt es daran das bei der Methode losgehts() der Zugriffsmodifier fehlt? Meine Ideen: Die Ausgabe lautet: KleineFigur:tanze Figur:dreheRechts KleineFigur:losGehts KleineFIgur:schrittVor Drehung:schrittVor Drehung:dreheRechts Drehung:dreheLinks Drehung:dreheLinks Drehung:dreheLinks |
|||||
|
||||||
18.07.2015, 07:43 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Es wäre hilfreich den Code zu sehen, der für die Ausgabe verantwortlich ist. |
|||||
18.07.2015, 08:03 | Auf diesen Beitrag antworten » | |||||
gg_ |
|
|||||
18.07.2015, 08:50 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Du hast ein Objekt vom Typ KleineFigur. Wenn es da eine Methode losGehts gibt, wird sie auch verwendet. |
|||||
Anzeige | ||||||
|
||||||
18.07.2015, 08:56 | Auf diesen Beitrag antworten » | |||||
gg_ | Ich verstehe es wirklich nicht so ganz, es wird zuerst die Methode dreheRechts() aus der Klasse Figur aufgerufen, warum wir denn dort (in der Klasse Figur) nicht die Methode losGehts() aufgerufen? |
|||||
18.07.2015, 09:50 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Weil du immer noch ein Objekt der Klasse KleineFigur als aufrufende Klasse hast. Stelle dir das am besten so vor: wenn du die Methode nicht überschreibst, wird sie einfach aus der Basisklasse genommen und hineinkopiert. Ändern wir die Methode Figur.dreheRechts etwas ab:
mit getClass().getName() kriegst du den Namen der aufrufenden Klasse Ausgabe: "Figur:dreheRechts -> KleineFigur" |
|||||
18.07.2015, 10:02 | Auf diesen Beitrag antworten » | |||||
gg_ | achh jetzt verstehe ich es DANKE |
|||||
18.07.2015, 14:40 | Auf diesen Beitrag antworten » | |||||
gg_ | mir ist etwas noch unklar: in der Klasse KleineFigur ist ein Methodenaufruf mit super. Wird dann die Methode aus der Figur aufgerufen oder aus der Klasse Drehung, die Drehung ist ja die Oberklasse von allen |
|||||
18.07.2015, 18:14 | Auf diesen Beitrag antworten » | |||||
as_string | super bezieht sich immer auf dem direkten Vater. Sonst wäre es in Java ja immer Object. Außerdem sollst Du ja gar nicht zwingend wissen müssen, von welcher Klasse eine andere Klasse erbt, die Du erweitern willst. Deshalb immer nur eine drüber, die Du auch gerade erweiterst. Gruß Marco |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|