Heim > Java > javaLernprogramm > Warum ist die Reihenfolge des Konstruktoraufrufs in Java wichtig: „this()' und „super()'?

Warum ist die Reihenfolge des Konstruktoraufrufs in Java wichtig: „this()' und „super()'?

DDD
Freigeben: 2024-12-30 03:16:10
Original
393 Leute haben es durchsucht

Why Does Constructor Invocation Order Matter in Java: `this()` and `super()`?

Aufrufreihenfolge des Konstruktors: Warum sind this() und super() wichtig?

Java-Mandate, die this() und super( aufrufen ) innerhalb eines Konstruktors die Anfangsanweisungen sein. Diese Anforderung ergibt sich aus der sequentiellen Ausführung von Konstruktoren: Der Konstruktor der übergeordneten Klasse muss vor dem Konstruktor der Unterklasse aufgerufen werden.

Durch die Sicherstellung dieser Reihenfolge garantiert Java, dass die übergeordnete Klasse ordnungsgemäß initialisiert wird, bevor auf eines ihrer Mitglieder zugegriffen wird im Konstruktor der Unterklasse. Betrachten Sie das folgende Beispiel:

public class MyClass {
    public MyClass(int x) {}
}

public class MySubClass extends MyClass {
    public MySubClass(int a, int b) {
        int c = a + b;
        super(c);  // COMPILE ERROR
    }
}
Nach dem Login kopieren

Der Compiler lehnt diesen Code mit einem Fehler ab, da der Aufruf von super nicht die erste Anweisung im Konstruktor von MySubClass ist. Das Neuanordnen des Codes, um sicherzustellen, dass diese Reihenfolge das Problem behebt:

public class MySubClass extends MyClass {
    public MySubClass(int a, int b) {
        super(a + b);  // OK
    }
}
Nach dem Login kopieren

Diese Reihenfolge ist entscheidend, da der Versuch, auf die Methoden oder Felder der übergeordneten Klasse zuzugreifen, bevor die übergeordnete Klasse über super() initialisiert wird, zu undefiniertem Verhalten führen kann.

Ebenso muss der Aufruf von this() die erste Anweisung in einem Konstruktor sein, um sicherzustellen, dass das aktuelle Objekt vollständig initialisiert ist, bevor ein anderer Konstruktor in derselben Klasse aufgerufen wird. Durch das Auferlegen dieser Einschränkungen behält Java die ordnungsgemäße Ausführungsreihenfolge der Konstruktoren bei und verhindert mögliche Fehler.

Das obige ist der detaillierte Inhalt vonWarum ist die Reihenfolge des Konstruktoraufrufs in Java wichtig: „this()' und „super()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage