Hallo zusammen,
ich habe eine Frage bezüglich der Polymorphie in Java. Bisher war ich der Annahme, dass ich das Konzept der späten Bindung verstanden habe. Jetzt bin ich aber an eine Stelle gekommen, wo ich mir dann doch nicht so sicher bin, ob ich es verstanden habe.
Davon ausgehend das ich 3 Klassen habe.
Jetzt kann ich ja in der main() folgendes machen:
Ich dachte jetzt, dass ich zur Laufzeit die Referenz anA auf irgendein Objekt xyz zeigen lassen kann (wenn es vererbungstechnisch “unter ClassA“ liegt). Wenn ich dann anA.tueWasAnderes() aufrufe wird (wegen später Bindung) die zu dem Objekt passende Methode tueWasAnderes() aufgerufen, also entweder die Methode aus ClassB oder ClassC.
Nun steht in meinem Java Buch, dass sich der Compiler nach dem Typen der Referenz richtet, also ClassA. Nun kennt ClassA die Methode tueWasAnderes() nicht, deshalb kriege in Eclipse, wenn ich anA. (Punkt) tippe, in der Methodenauswahlliste die Methode tueWasAnderes() gar nicht angezeigt.
Ich habe gedacht verstanden zu haben, dass ich mir ne Referenz vom generalisierten Typ erstelle und damit (je nach dem welches konkrete Objekt dran hängt) jede Methode aller im Vererbungsweg tiefer liegenden Klassen ansprechen zu können.
Ich frage mich was mir die Polymorphie dann bringen soll?
Ich hoffe ich konnte meine Problemstellung verständlich darstellen und das ihr mir helfen könnt.
Vorab danke und einen schönen Gruß
Mario
ich habe eine Frage bezüglich der Polymorphie in Java. Bisher war ich der Annahme, dass ich das Konzept der späten Bindung verstanden habe. Jetzt bin ich aber an eine Stelle gekommen, wo ich mir dann doch nicht so sicher bin, ob ich es verstanden habe.
Davon ausgehend das ich 3 Klassen habe.
Code:
ClassA{
tueWas(){
…
}
ClassB extends ClassA{
….
tueWasAnderes(){
….
}
}
ClassC extends ClassB{
….
}
Jetzt kann ich ja in der main() folgendes machen:
Code:
ClassA() anA = new ClassC() // oder analog, die Referenz anA kann auf jedes Objekt
// “zeigen“, welches in der Vererbungshierarchie weiter unten
// liegt.
Ich dachte jetzt, dass ich zur Laufzeit die Referenz anA auf irgendein Objekt xyz zeigen lassen kann (wenn es vererbungstechnisch “unter ClassA“ liegt). Wenn ich dann anA.tueWasAnderes() aufrufe wird (wegen später Bindung) die zu dem Objekt passende Methode tueWasAnderes() aufgerufen, also entweder die Methode aus ClassB oder ClassC.
Nun steht in meinem Java Buch, dass sich der Compiler nach dem Typen der Referenz richtet, also ClassA. Nun kennt ClassA die Methode tueWasAnderes() nicht, deshalb kriege in Eclipse, wenn ich anA. (Punkt) tippe, in der Methodenauswahlliste die Methode tueWasAnderes() gar nicht angezeigt.
Ich habe gedacht verstanden zu haben, dass ich mir ne Referenz vom generalisierten Typ erstelle und damit (je nach dem welches konkrete Objekt dran hängt) jede Methode aller im Vererbungsweg tiefer liegenden Klassen ansprechen zu können.
Ich frage mich was mir die Polymorphie dann bringen soll?
Ich hoffe ich konnte meine Problemstellung verständlich darstellen und das ihr mir helfen könnt.
Vorab danke und einen schönen Gruß
Mario