Der Aspekt der Erweiterung bei der Vererbung ermöglicht problemlos polymorphes Verhalten von Objekten.
Im unten gezeigten Beispiel wird eine Klassenhierarchie verwendet in der in jeder Unterklasse ein Attribut und eine Methode hinzugefügt wird
Ein Programm welches nur Instanzen der Klasse Kraftwagen kennt hat keine Probleme Instanzen von LastKraftwagen oder Bus zu verwenden. Die Instanzen besitzen alle ein Attribut nummernschild und eine Methode getKennZeichen().
Polymorphismus funktioniert in Java nur bei Attributen und Methoden die von einer gemeinsamen Basisklasse geerbt worden sind! |
Klassen mit namensgleichen Attributen und Methoden profitieren nicht vom Polymorphismus. Der Übersetzer kontrolliert die Klassenhierarchie beim Übersetzen und unterbindet Zuweisungen zwischen Typen(Klassen) die namensgleiche Methoden besitzen, diese aber nicht von einer gemeinsamen Klasse erben.
Dieses Konzept lässt sich in Java wie folgt umsetzen:
import Kraftwagen; import LastKraftwagen; import Bus; ... Kraftwagen[] flotte = new Kraftwagen[3]; flotte[0] = new Kraftwagen(); flotte[1] = new LastKraftwagen(); flotte[2] = new Bus(); ... for (i=0; i<3; i++) { // Das Programm kennt im Moment nur Kraftwagen! System.out.println(flotte[i].getKennZeichen()); } ...
Das Programm kann innerhalb der for-Schleife mit Instanzen der Klasse LastKraftwagen und Bus umgehen. Es muss sich aber auf die in der Klasse Kraftwagen bekannten Eigenschaften des Objekts beschränken.
- Printer-friendly version
- Log in to post comments
- 10270 views
Letzter Satz
Haben Sie im letzten Satz: "Das Programm kann mit Instanzen der Klasse LastKraftwagen und Bus umgehen da es sich auf die in der Klasse Kraftwagen bekannten Eigenschaften des Objekts beschränken muss."
das Wort "nicht" vergessen?
Müsste der Satz nicht:"Das Programm kann NICHT mit Instanzen der Klasse LastKraftwagen und Bus umgehen da es sich auf die in der Klasse Kraftwagen bekannten Eigenschaften des Objekts beschränken muss." heißen?
Danke
Der Satz war schlecht formuliert. Ich habe ihn neu formuliert. Ich hoffe, dass ist jetzt besser verständlich.