Ja.
Prüfen Sie den folgenden vorgeschlagenen Konstruktor für Spielfilm
:
// vorgeschlagener Konstruktor public Spielfilm( String ttl, int len, String reg, String bew ) { titel = ttl; // das machen, was der Konstruktor der Superklasse tut laenge = len; vorhanden = true; regisseur = reg; bewertung = bew; }
Es sieht so aus, als gäbe es keine Notwendigkeit den Konstruktor der Superklasse aufzurufen. Aber es wird immer ein Konstruktor der Superklasse aufgerufen, auch wenn Sie ihn nicht explizit anfordern. Der Java Compiler betrachtet den oben stehenden Code als "Kurzform" für diesen:
// vorgeschlagener Konstruktor
public Spielfilm( String ttl, int len, String reg, String bew )
{
super(); // den argumentenlosen Konstruktor der Superklasse aufrufen
titel = ttl; // das machen, was der Konstruktor der Superklasse tut
laenge = len;
vorhanden = true;
regisseur = reg; bewertung = bew;
}
Wie immer kommt super()
zuerst,
auch wenn Sie es nicht angeben.
Wenn die Superklasse keinen argumentenlosen Konstruktor hat,
dann verursacht diese "Kurzform" einen Syntaxfehler.
In unserem Programm fehlt der argumentenlose Konstruktor in der Klassendefinition von Videoband
(der Superklasse).
Der vorgeschlagene Konstruktor (oben) verlangt einen solchen Konstruktor,
also würde er einen Syntaxfehler verursachen.