9.1 Polymorphes Verhalten bei Vererbung und Erweiterung

 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.

Anonymous (not verified)

Fri, 12/04/2015 - 14:15

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?

Stefan Schneider

Fri, 12/04/2015 - 15:26

In reply to by Anonymous (not verified)

Der Satz war schlecht formuliert. Ich habe ihn neu formuliert. Ich hoffe, dass ist jetzt besser verständlich.