Ist dieser Code korrekt?
KinderGeburtstag kinder; kinder = new Geburtstag ( "Terry", 23 );
Nein. Eine Referenzvariable einer Subklasse
(KinderGeburtstag
) kann nicht für
ein Objekt der Superklasse (Geburtstag
) verwendet werden.
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
:
gruss()
Methode der Superklasse.
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" ); } }