Eine gute Antwort wäre:

Alle Videos haben einen Verleihpreis, also sollten die Änderungen in Videoband vorgenommen werden. Eine neue Variable leihgebuehr sollte der Superklasse hinzugefügt werden. Dann sollte ihr Konstruktor und ihre anzeigen() Methode modifiziert werden. Die zwei Subklassen werden diese Änderungen erben. Das Ausbessern der Superklasse bringt alle Ihre Subklassen in Ordnung.

Die Klasse Object

Denken Sie an die Regel: jeder Konstruktor beginnt mit super() (Aufruf des Konstruktors der Superklasse.) Wenn Sie ihn nicht explizit hineinstellen, dann wird es für Sie der Java Compiler automatisch tun. Betrachten Sie jetzt die Definition von Videoband:

class Videoband
{
  String  titel;    // Titel des Videos
  int     laenge;   // Anzahl der Minuten
  boolean vorhanden;    // ist das Video vorhanden?

  // Konstruktor
  public Videoband( String ttl, int len )
  {
    titel = ttl; laenge = len; vorhanden = true;
  }

  public void anzeigen()
  {
    System.out.println( titel + ", " + laenge + " Min. verfuegbar:" + vorhanden );
  }
}

Gemäß der Regel wird der Compiler automatisch dieses tun:

  // Konstruktor
  public Videoband( String ttl, int len )
  {
    super();     // den Konstruktor der Superklasse verwenden
    titel = ttl; laenge = len; vorhanden = true;
  }

Das 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 Videoband extends Object
{
. . .
}

FRAGE 22:

Ist es möglich eine Klassendefinition zu schreiben, die nicht Object als ihren ultimativen Vorläufer hat?

Inhaltsverzeichnis