Konstruktoren in Java: „Void“ vs. „Non-Void“
In der Programmiersprache Java können Klassen Konstruktoren haben, die sind spezielle Methoden, die aufgerufen werden, wenn eine Instanz der Klasse erstellt wird. Konstruktoren dienen dazu, den Zustand des Objekts zu initialisieren. Es gibt zwei Arten von Konstruktoren: „Void“-Konstruktoren und „Non-Void“-Konstruktoren.
„Non-Void“-Konstruktoren
Ein „Non-Void“-Konstruktor deklariert einen anderen Rückgabetyp als void. Mit anderen Worten: Es wird ein Wert zurückgegeben, normalerweise eine Instanz der Klasse selbst. Wenn ein „nicht-void“-Konstruktor aufgerufen wird, wird ein neues Objekt erstellt und der zurückgegebene Wert wird der Referenzvariablen zugewiesen, die den Konstruktor aufgerufen hat.
„Void“-Konstruktoren
„Void“-Konstruktoren deklarieren hingegen keinen Rückgabetyp. Stattdessen führen sie einfach den Konstruktorkörper aus und initialisieren den Zustand des Objekts. Sie geben keinen Wert zurück und können daher nicht zum Erstellen neuer Objekte verwendet werden.
Problem mit der Sichtbarkeit des Konstruktors
In Java haben Konstruktoren nicht die gleichen Zugriffsmodifikatoren wie Methoden. Die Sichtbarkeit eines Konstruktors muss mit der Sichtbarkeit der Klasse selbst übereinstimmen. Wenn beispielsweise eine Klasse als öffentlich deklariert ist, muss auch ihr Konstruktor als öffentlich deklariert werden.
Beispiel: Auswirkung auf die Sichtbarkeit des Konstruktors
Beachten Sie die folgenden zwei Codeausschnitte:
Beispiel 1: Konstruktor mit Return Typ
public class Class1 { public static Integer value = 0; public Class1() { da(); } public int da() { Class1.value += 1; return 5; } public static void main(String[] args) { Class1 h = new Class1(); Class1 h2 = new Class1(); System.out.println(Class1.value); } }
Beispiel 2: Konstruktor mit Void-Return-Typ
public class Class1 { public static Integer value = 0; public void Class1() { da(); } public int da() { Class1.value += 1; return 5; } public static void main(String[] args) { Class1 h = new Class1(); Class1 h2 = new Class1(); System.out.println(Class1.value); } }
Beobachtung:
In Beispiel 1 ist die Ausgabe 2. Dies liegt daran, dass der Konstruktor die Methode da() aufruft, die das Wertfeld erhöht um 1.
In Beispiel 2 ist die Ausgabe jedoch 0. Dies liegt daran, dass der Konstruktor mit dem Rückgabetyp void die da()-Methode nicht tatsächlich aufruft. Stattdessen handelt es sich um eine Methode mit demselben Namen wie die Klasse, die sich vom Konstruktor unterscheidet.
Schlussfolgerung:
In Java sind Konstruktoren keine Methoden. Sie werden zum Initialisieren des Status eines Objekts verwendet und haben keine Rückgabetypen. Der Versuch, einen Konstruktor mit einem anderen Rückgabetyp als void zu deklarieren, führt zu einem Kompilierungsfehler.
Das obige ist der detaillierte Inhalt vonJava-Konstruktoren: Was ist der Unterschied zwischen Void- und Non-Void-Konstruktoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!