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 Sie sich diese Regel nur schwer merken können, dann denken Sie einfach an sich und Ihre Eltern:

Es ist für Sie OK nach Hause zu gehen und für ein paar Tage im Haus Ihrer Eltern zu bleiben, aber für Ihre Eltern ist es nicht OK, ein paar Tage in Ihrem Schlafzimmer zu bleiben.

Lassen Sie uns jetzt KinderGeburtstag umschreiben, um Polymorphie noch genauer betrachten zu können. Angenommen Sie 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:

Fügen Sie die fehlende Teile ein.