Heim > Java > javaLernprogramm > Java-Konstruktoren: Was ist der Unterschied zwischen Void- und Non-Void-Konstruktoren?

Java-Konstruktoren: Was ist der Unterschied zwischen Void- und Non-Void-Konstruktoren?

Mary-Kate Olsen
Freigeben: 2024-12-05 13:13:14
Original
687 Leute haben es durchsucht

Java Constructors: What's the Difference Between Void and Non-Void Constructors?

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);
    }
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage