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?

Dec 05, 2024 pm 01:13 PM

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen ICEBERG: Die Zukunft von Data Lake Tabellen Mar 07, 2025 pm 06:31 PM

ICEBERG: Die Zukunft von Data Lake Tabellen

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

See all articles