zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Karte       k;
Valentin    v;
Geburtstag  g;
Feiertag    f;

k = new Valentin("Debby", 8);     //OK
g = new Valentin("Elroy", 3);     //FALSCH
v = new Valentin("Fiona", 3);     //OK
f = new Geburtstag("Greg", 35);   //FALSCH

Eine weitere Hierarchie

Hier ist die Abbildung einer anderen Hierarchie: In dieser Hierarchie gibt es keine abstrakten Klassen, also kann jede Klasse instanziiert werden. Wie wir bereits gesehen haben ist das Folgende OK:

superklasseReferenz = subklasseReferenz

Die Referenzvariable einer Superklasse kann die Referenz auf ein Objekt einer ihrer eigenen Subklassen (oder deren Subklassen und so weiter) enthalten. Aber, die umgekehrte Richtung

// falsch, falsch, falsch!!!
subklasseReferenz = superklasseReferenz

ist nicht zulässig.

Hier sind einige Variablen:

Nager    nager;
Ratte    ratte;
Maus     maus;

Wir betrachten die Tabelle und entscheiden für jeden Codeabschnitt ob er korrekt ist oder nicht.

CodeabschnittOK oder Nicht?CodeabschnittOK oder Nicht?
nager = new Ratte();
nager = new Feldmaus();
maus = new Ratte();
maus = new Nager();
ratte = new Nager();
ratte = new Wasserratte();
ratte = new Feldmaus();
ratte = new Maus();

FRAGE 15:

Was denkt Ihr, gibt es noch viel mehr über Vererbung und Polymorphie zu lernen?