Ausführungsreihenfolge des Initialisierers in Java
Der angegebene Codeausschnitt wirft eine Frage bezüglich der Reihenfolge auf, in der Felder und Konstruktoren in Java initialisiert werden. Entgegen der Erwartung, dass Konstruktoren der Feldinitialisierung vorangehen, lässt die Ausgabe des Programms – „YXZY“ – etwas anderes vermuten.
Um dieses Verhalten zu verdeutlichen, werfen wir einen Blick auf die tatsächliche Initialisierungsreihenfolge in Java:
-
Statische Variableninitialisierer und Blöcke:
- Alle statischen Variableninitialisierer und statischen Initialisierungsblöcke werden zuerst ausgeführt, um sicherzustellen, dass alle statischen Mitglieder initialisiert werden, bevor Instanzen der Klasse erstellt werden.
-
Super() Call:
- Der Aufruf zum Der super()-Konstruktor, ob explizit oder implizit, ist der nächste Schritt. Dieser Aufruf initialisiert die Felder und den Konstruktor der übergeordneten Klasse.
-
Instanzvariableninitialisierer und -blöcke:
- Als nächstes die Instanz Variableninitialisierer und Instanzinitialisierungsblöcke werden ausgeführt und initialisieren die Instanzmitglieder in der Reihenfolge, in der sie in der erscheinen Code.
-
Konstruktorkörper:
- Schließlich wird der verbleibende Körper des Konstruktors ausgeführt und der Initialisierungsprozess abgeschlossen .
Das obige ist der detaillierte Inhalt vonWas bestimmt die Ausführungsreihenfolge von Initialisierern in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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