Dieser Artikel bietet Ihnen eine detaillierte Einführung (Codebeispiel) zum Instanzinitialisierungsblock (IIB). Ich hoffe, dass er Ihnen weiterhilft.
Klasseninitialisierungsblock in der Java-Sprache In diesem Artikel haben wir kurz den Instanzinitialisierungsblock (IIB) in Java vorgestellt. Ich denke jedoch, dass die Einführung etwas einfach ist, daher werde ich einen weiteren Artikel schreiben, um sie ausführlich vorzustellen.
In der Java-Sprache gibt es drei Operationen: Methoden, Konstruktoren und Initialisierungsblöcke.
Der Initialisierungsblock ist in einen Instanzinitialisierungsblock (IIB) und einen statischen Initialisierungsblock unterteilt. In diesem Kapitel stellen wir hauptsächlich den Instanzinitialisierungsblock vor.
Der Instanzinitialisierungsblock wird zum Initialisieren von Instanzvariablen verwendet.
Der Instanzinitialisierungsblock wird beim Initialisieren einer Instanz der Klasse ausgeführt und vor dem Konstruktor ausgeführt. Und sie werden jedes Mal ausgeführt, wenn ein Objekt der Klasse erstellt wird.
Syntax des Instanziierungsblocks
Der Instanzinitialisierungsblock wird im Allgemeinen vor dem Konstruktor platziert, wobei geschweifte Klammern {}
verwendet werden, um den Code zu erweitern. Die Syntaxstruktur ist im Allgemeinen wie folgt
class JavaTester { // 实例化块 { System.out.println("IIB block"); } // 构造函数 JavaTester() { System.out.println("Constructor Called"); } public static void main(String[] args) { JavaTester a = new JavaTester(); } }
Beachten Sie, dass für Klassen keine Instanziierungsblöcke erforderlich sind. Nur eine Option. Es wird verwendet, um den öffentlichen Teil des Konstruktors zu extrahieren und separat auszuführen.
Dieser Code kann kompiliert und ausgeführt werden, und die Ergebnisse sind wie folgt
[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester IIB block Constructor Called
Eine Klasse enthält mehrere Instanzinitialisierungsblöcke
Instanzinitialisierungsblock ist für die Klasse nicht erforderlich und es gibt keine Begrenzung der Anzahl. Eine Klasse kann keinen Instanzinitialisierungsblock oder mehrere Instanzinitialisierungsblöcke haben.
Wenn eine Klasse über mehrere Instanzinitialisierungsblöcke verfügt, werden diese in der Reihenfolge von oben nach unten ausgeführt, d. h. der oben in der Klasse definierte Instanzinitialisierungsblock wird zuerst ausgeführt. Schauen wir uns einen Codeabschnitt an. Die folgende Klasse JavaTester definiert mehrere Instanzinitialisierungsblöcke.class JavaTester { { System.out.println("IIB1 block 1 "); } { System.out.println("IIB2 block 2"); } JavaTester() { System.out.println("Constructor Called"); } { System.out.println("IIB3 block 3"); } public static void main(String[] args) { JavaTester a = new JavaTester(); } }Führen Sie den obigen Code aus, das Ausgabeergebnis ist wie folgt
[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester IIB1 block 1 IIB2 block 2 IIB3 block 3 Constructor Called
Initialisierungsblock in der übergeordneten Klasse
Im Vererbungssystem von Java Sprache können die übergeordneten Klassen auch Initialisierungsblöcke haben, und es gibt keine Begrenzung der Anzahl. Der Instanzinitialisierungsblock der übergeordneten Klasse wird unmittelbar nach dem Aufruf von im Konstruktor der untergeordneten Klasse ausgeführt. Der Compiler führt den Instanzinitialisierungsblock der übergeordneten Klasse aus, bevor er den Instanzinitialisierungsblock der aktuellen Klasse ausführt. super()
class B { B() { System.out.println("B-Constructor Called"); } { System.out.println("B-IIB block"); } } public class JavaTester extends B { { System.out.println("JavaTester IIB1 block 1 "); } { System.out.println("JavaTester IIB2 block 2"); } JavaTester() { super(); System.out.println("JavaTester-Constructor Called"); } { System.out.println("JavaTester IIB3 block 3"); } public static void main(String[] args) { JavaTester a = new JavaTester(); } }Führen Sie das obige Beispiel aus und die Ausgabe ist wie folgt
[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester B-IIB block B-Constructor Called JavaTester IIB1 block 1 JavaTester IIB2 block 2 JavaTester IIB3 block 3 JavaTester-Constructor CalledAus den laufenden Ergebnissen Beim Erstellen eines Klassenobjekts von JavaTester versucht der Compiler, den Konstruktor der Klasse JavaTester auszuführen. Da es jedoch eine übergeordnete Klasse hat, wechselt es nach dem Erkennen der
-Anweisung dazu, zuerst den Konstruktor der übergeordneten Klasse auszuführen. super()
Die Hauptpunkte des Instanzinitialisierungsblocks
Lassen Sie uns die Hauptpunkte des Instanzinitialisierungsblocks überprüfen.Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Instanzinitialisierungsblock (IIB) in Java (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!