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 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
:
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" ); } }
Wir fügen die fehlende Teile ein.