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

Hierarchie Nager

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.

CodeOK oder Nicht?CodeOK 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?