Default-Konstruktor

Aus FI-Wiki
Version vom 7. September 2026, 10:49 Uhr von Moettke (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Ein Konstruktor wird beim Erzeugen eines Objekts aufgerufen und dient zur Initialisierung des Objekts. Wird in einer Java-Klasse kein eigener Konstruktor definiert, erzeugt der Compiler automatisch einen sogenannten Default-Konstruktor.

Beispiel

Die Klasse besitzt keinen selbst definierten Konstruktor:

public class Person {
    String name;
    int alter;
}

Trotzdem kann ein Objekt ohne Argumente erzeugt werden:

Person person = new Person();

Der Compiler stellt dafür automatisch einen Default-Konstruktor bereit.

Vereinfacht entspricht dieser:

public Person() {
    super();
}

Die Sichtbarkeit des automatisch erzeugten Default-Konstruktors entspricht dabei der Sichtbarkeit der Klasse.

Initialwerte der Attribute

Werden Attribute nicht ausdrücklich initialisiert, erhalten sie ihre Standardwerte.

Datentyp Standardwert
byte, short, int, long 0
float, double 0.0
boolean false
char '\u0000'
Referenztypen null

Beispiel:

public class Person {
    String name;
    int alter;
    boolean aktiv;
}

Nach

Person person = new Person();

gelten zunächst:

name  → null
alter → 0
aktiv → false

Eigener Konstruktor

Sobald mindestens ein eigener Konstruktor definiert wird, erzeugt der Compiler keinen Default-Konstruktor mehr.

public class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }
}

Folgender Aufruf ist jetzt nicht mehr möglich:

Person person = new Person();   // Compilerfehler

Es existiert nur der selbst definierte Konstruktor:

Person person = new Person("Anna");

Soll zusätzlich ein Konstruktor ohne Parameter vorhanden sein, muss dieser selbst definiert werden:

public Person() {
}

public Person(String name) {
    this.name = name;
}

Default-Konstruktor und parameterloser Konstruktor

Die Begriffe sollten nicht verwechselt werden:

  • Default-Konstruktor: wird automatisch vom Compiler erzeugt, wenn kein Konstruktor definiert wurde.
  • Parameterloser Konstruktor: besitzt keine Parameter und kann auch selbst programmiert werden.
public Person() {
    name = "Unbekannt";
}

Dieser Konstruktor ist parameterlos, aber kein Default-Konstruktor, da er vom Programmierer selbst definiert wurde.

Kurzmerksatz

Definiert eine Klasse keinen Konstruktor, erzeugt der Java-Compiler automatisch einen Default-Konstruktor. Sobald ein eigener Konstruktor vorhanden ist, wird kein Default-Konstruktor mehr erzeugt.