zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Ist dieser Code korrekt?

KinderGeburtstag kinder;
kinder = new Geburtstag ( "Terry", 23 );

Antwort:

Nein. Eine Referenzvariable einer Subklasse (KinderGeburtstag) kann nicht für ein Objekt der Superklasse (Geburtstag) verwendet werden.

Neue Definition von KinderGeburtstag

Eltern können Kinder aufnehmen, aber Kinder können das nicht. Wenn Ihr Euch diese Regel nur schwer merken könnt, dann denkt einfach an Euch und Eure Eltern:

Es ist für Euch OK nach Hause zu gehen und für ein paar Tage im Haus Eurer Eltern zu bleiben, aber für Eure Eltern ist es nicht OK, ein paar Tage in Eurem Schlafzimmer zu bleiben.

Lasst uns jetzt KinderGeburtstag umschreiben, um Polymorphie noch genauer betrachten zu können. Angenommen wir wollen zwei gruss() Methoden für KinderGeburtstag:

  1. Die gruss() Methode der Superklasse.
    • Sie wird durch Vererbung aufgenommen werden.
  2. Eine Methode mit dem Namen des Absenders als Parameter.
    • Das wird eine zusätzliche Methode sein―sie wird die Methode der Superklasse nicht überschreiben.
    • Zusätzlich zu dem was die Methode der Superklasse tut wird diese Methode ausgeben "Was bist du gross geworden!! In Liebe, ", gefolgt vom Namen des Absenders.

Hier ist ein Grundgerüst:

// Überarbeitete Version
//
class KinderGeburtstag  extends Geburtstag

{
  public  KinderGeburtstag ( String e, int jahre )
  {
    super ( e, jahre );
  }

  // zusätzliche Methode — überschreibt nicht die Methode der Superklasse
  public void gruss(  )
  {
    super.gruss();
    System.out.println("Was bist du gross geworden!!\n");
    System.out.println("In Liebe, " +  + "\n" );
  }
}

FRAGE 11:

Wir fügen die fehlende Teile ein.