Default-Konstruktor
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.
