Da die Klasse Videoband
weder die Variable regisseur
noch bewertung
hat,
kann ihre anzeigen()
Methode sie nicht verwenden.
Wir brauchen eine neue anzeigen()
Methode in der Klasse Spielfilm
:
// der Klasse Spielfilm hinzugefügt public void anzeigen() { System.out.println( titel + ", " + laenge + " Min. verfuegbar:" + vorhanden ); System.out.println( "Regisseur: " + regisseur + " " + bewertung ); }
Auch wenn die Superklasse eine anzeigen()
Methode hat,
wird jetzt die neue Definition von anzeigen()
in der Subklasse die Version der
Superklasse überschreiben.
Die Methode einer Subklasse überschreibt die Methode einer Superklasse, wenn Sie die gleiche Signatur wie die Methode einer Superklasse hat. Jetzt hat die Superklasse ihre Methode, und die Subklasse hat ihre eigene Methode mit der gleichen Signatur. (Denken Sie daran, dass die Signatur einer Methode der Name der Methode und ihre Parameterliste ist.)
Ein Objekt vom Typ der Superklasse wird die Methode enthalten, die in der Definition der Superklasse gegeben ist. Ein Objekt vom Typ der Subklasse wird die Methode enthalten, die in der Definition der Subklasse gegeben ist.
Mit der Änderung in der Klasse Spielfilm
wird das
folgende Programm die volle Information für beide Artikel ausgeben.
class VideoVerleih { public static void main ( String args[] ) { Videoband artikelA = new Videoband("Microcosmos", 90 ); Spielfilm artikelB = new Spielfilm("Jaws", 120, "Spielberg", "PG" ); artikelA.anzeigen(); artikelB.anzeigen(); } }
Die Zeile artikelA.anzeigen()
ruft die anzeigen()
Methode auf,
die in Videoband
definiert ist, und
die Zeile artikelB.anzeigen()
ruft die anzeigen()
Methode auf,
die in Spielfilm
definiert ist.
Microcosmos, 90 Min. verfuegbar: true Jaws, 120 Min. verfuegbar: true Regisseur: Spielberg PG