Heim >Java >javaLernprogramm >Müssen Java-Unterklassen den Superklassenkonstruktor immer explizit aufrufen?
Müssen Sie den Superklassenkonstruktor in Java-Unterklassen explizit aufrufen?
Beim Definieren einer Unterklasse ist es üblich, Konstruktoren zu sehen, die explizit aufrufen Superklassenkonstruktor mit super(). Allerdings kann man sich fragen, ob dies notwendig ist.
Wird super() automatisch vom Compiler hinzugefügt?
Ja, wenn der Unterklassenkonstruktor einen Aufruf der Oberklasse auslässt Konstruktor: Der Compiler ruft automatisch den zugänglichen Konstruktor ohne Argumente (Konstruktor ohne Argumente) in der Oberklasse auf. Dieses Standardverhalten wird als Konstruktorverkettung bezeichnet.
Typen von Konstruktoren
Wann ist super( ) Erforderlich?
Die explizite Verwendung von super() ist nur erforderlich, wenn:
Beispiel 1:
<code class="java">public class Base {} public class Derived extends Base {}</code>
Nein Ein expliziter Aufruf von super() ist erforderlich, da Base über einen Standardkonstruktor verfügt.
Beispiel 2:
<code class="java">public class Base { public Base(int i) {} } public class Derived extends Base { public Derived(int i) { super(i); // Explicitly call the Base(int) constructor } }</code>
In diesem Fall ist super(i) erforderlich, weil Die Superklasse verfügt nicht über einen Konstruktor ohne Argumente, und der Konstruktor der Unterklasse muss einen Anfangswert für seinen i-Parameter bereitstellen.
Durch das Verständnis dieser Konzepte können Sie unnötige super()-Aufrufe vermeiden und eine ordnungsgemäße Konstruktorverkettung sicherstellen in Ihren Unterklassen.
Das obige ist der detaillierte Inhalt vonMüssen Java-Unterklassen den Superklassenkonstruktor immer explizit aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!