Eine gute Antwort wäre:

Karte postkarte2 = new Feiertag( "Bob" ) ;
Karte postkarte3 = new Geburtstag( "Emily", 22 ) ;

Ja, beide sind korrekt, denn Feiertag «Ist eine-» Karte und Geburtstag «Ist eine-» Karte.

Referenzvariablen der Superklasse verwenden

Eine Referenzvariable der Klasse "C" kann von jedem Objekt, das durch Vererbung mit der Klasse "C" verwandt ist, verwendet werden. Zum Beispiel, eine Karte-Referenzvariable postkarte2 kann eine Referenz auf ein Feiertag-Objekt, ein Valentin-Objekt oder ein Geburtstag-Objekt enthalten. Üblicherweise werden Referenzvariablen vom Typ der Superklasse verwendet, um Objektreferenzen ihrer Subklassen zu enthalten.

Wichtiger Hinweis:

Wenn eine Methode aufgerufen wird, ist es die Klasse des Objekts (nicht die der Variablen), die bestimmt welche Methode ausgeführt wird.

Genau das ist es, was Sie erwarten würden. Die ausgeführte Methode ist Teil des Objekts. Zum Beispiel:

Karte postkarte = new Valentin( "Joe", 14 ) ;
postkarte.gruss();

Karte postkarte2 = new Feiertag( "Bob" ) ;
postkarte2.gruss();

Karte postkarte3 = new Geburtstag( "Emily", 12 ) ;
postkarte3.gruss();

Das wird die gruss() Methode für ein Valentin-Objekt ausführen, dann wird die gruss() Methode für ein Feiertag-Objekt ausgeführt und dann wird die gruss() Methode für ein Geburtstag-Objekt ausgeführt. Der Typ des Objekts bestimmt in jedem Fall welche Version der Methode ausgeführt wird.

FRAGE 12:

Ist es notwendig drei verschiedene Variablen für dieses Programmfragment zu verwenden?

Inhaltsverzeichnis