Eine gute Antwort wäre:

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

// tun Sie das nicht
subklasseReferenz = superklasseReferenz

ist nicht zulässig.

Hier sind einige Variablen:

Nager    nager;
Ratte    ratte;
Maus     maus;

Betrachten Sie die Tabelle und entscheiden Sie, 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 glauben Sie, gibt es noch viel mehr über Vererbung und Polymorphie zu lernen?

Inhaltsverzeichnis