Alle Videos haben einen Verleihpreis,
also sollten die Änderungen in VideoTape vorgenommen werden.
Eine neue Variable rent sollte der Superklasse hinzugefügt werden.
Dann sollte ihr Konstruktor und ihre show() Methode modifiziert werden.
Die zwei Subklassen werden diese Änderungen erben.
Das Ausbessern der Superklasse bringt alle ihre Subklassen in Ordnung.
Denken Sie an die Regel: jeder Konstruktor
beginnt mit einem super() Konstruktor.
Wenn Sie ihn nicht explizit hineinstellen,
dann wird es für Sie der Java Compiler automatisch tun.
Betrachten Sie jetzt die Definition von VideoTape:
class VideoTape
{
String title; // Titel des Videos
int length; // Anzahl der Minuten
boolean avail; // ist das Video vorhanden?
// Konstruktor
public VideoTape( String ttl, int lngth )
{
title = ttl; length = lngth; avail = true;
}
public void show()
{
System.out.println( title + ", " + length + " Min. verfuegbar:" + avail );
}
}
Gemäß der Regel wird der Compiler automatisch dieses tun:
// Konstruktor
public VideoTape( String ttl, int lngth )
{
super(); // den Konstruktor der Superklasse verwenden
title = ttl; length = lngth; avail = true;
}
Dies ist korrekt.
Alle Klassen haben eine Superklasse, bis auf eine.
Die Klasse an der Spitze der Java Klassenhierarchie heißt
Object.
Wenn eine Klassendefinition keine Superklasse spezifiziert,
dann hat sie automatisch Object als Superklasse.
Der Compiler setzt es automatisch voraus, zum Beispiel:
class VideoTape extends Object
{
. . .
}