Schritt eins: Laden Sie die Klasse. Vor der Initialisierung wird ein Java-Objekt geladen und in der JVM ein Klassenobjekt generiert. Durch das Laden einer Klasse werden die folgenden Vorgänge ausgeführt. Die rekursive Beschreibung finden Sie unten.
Wenn die Klasse eine übergeordnete Klasse hat, wird deren übergeordnete Klasse zuerst geladen.
i Initialisieren Sie die statischen Mitglieder dieser Klasse
ii Führen Sie den statischen Codeblock dieser Klasse aus
Schritt 2: Erstellen Sie ein Objekt. Wenn die Klasse eine übergeordnete Klasse hat, wird beim Erstellen des Objekts zuerst das Objekt der übergeordneten Klasse erstellt, die Eigenschaften und Methoden der Unterklasse werden in die äußere Ebene eingeschlossen und dann die Referenz der Unterklasse wird zurückgegeben. Die rekursive Beschreibung ist unten angegeben.
Wenn die Klasse eine übergeordnete Klasse hat, erstellen Sie zuerst das Objekt der übergeordneten Klasse.
i Gemeinsame Mitglieder dieser Klasse initialisieren
ii Gemeinsamen Codeblock ausführen
iii Aufruf diese Klassenkonstruktionsmethode
Beispiel:
Das Klassenobjekt wird als Mitgliedsvariable verwendet
public class Info{ public Info(String s) { System.out.println(s); } }
Übergeordnete Klasse
public class Parent { public static Info info = new Info("Parent static member"); //静态成员 public Info info2 = new Info("Parent common member"); //普通成员 static { //静态代码块 System.out.println("parent static block"); } { //普通代码块 System.out.println("parent common block"); } public Parent() { //父类构造方法 System.out.println("Parent.Parent()"); } }
Unterklasse
public class Child extends Parent{ public static Info info = new Info("Child static member"); //静态成员 public Info info2 = new Info("Child common member"); //普通成员 static { //静态代码块 System.out.println("Child static block"); } { //普通代码块 System.out.println("Child common block"); } public Child() { //子类构造方法 System.out.println("Child.Child()"); } }
Im folgenden Testklassenladevorgang erstellen wir keine Objekte, sondern laden die Klasse direkt und laden die Unterklasse
public class InitObjectTest{ public static void main(String[] args) { try{ //Class.forName("Parent"); Class.forName("Child"); }catch(Exception e){ } //System.out.println("=============== now , we create an Object below ==========="); //new Parent(); } }
Testergebnisse:
Die Testergebnisse entsprechen den oben beschriebenen Regeln zum Laden von Klassen. Initialisieren Sie zuerst die statischen Mitglieder der übergeordneten Klasse, führen Sie dann den statischen Block der übergeordneten Klasse aus und initialisieren Sie dann die statischen Mitglieder der Unterklasse. und schließlich den statischen Block der Unterklasse ausführen. Wir können sehen, dass statische Mitglieder tatsächlich initialisiert werden, wenn die Klasse geladen wird.
Hinweis: Das Laden der Klasse erfolgt nur einmal. Danach wird die Klasse beim Erstellen des Objekts nicht mehr geladen. Deshalb wird der statische Codeblock nur einmal ausgeführt .
Empfohlenes Tutorial: Java-Einführungs-Tutorial
Das obige ist der detaillierte Inhalt vonSo initialisieren Sie Objekte in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!