Default-Konstruktor: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
Ein ''' | 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: | |||
<syntaxhighlight lang="java"> | |||
public class Person { | |||
String name; | |||
int alter; | |||
} | |||
</syntaxhighlight> | |||
Trotzdem kann ein Objekt ohne Argumente erzeugt werden: | |||
<syntaxhighlight lang="java"> | |||
Person person = new Person(); | |||
</syntaxhighlight> | |||
Der Compiler stellt dafür automatisch einen Default-Konstruktor bereit. | |||
Vereinfacht entspricht dieser: | |||
<syntaxhighlight lang="java"> | |||
public Person() { | |||
super(); | |||
} | |||
</syntaxhighlight> | |||
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. | |||
{| class="wikitable" style="width:100%; text-align:center;" | |||
! Datentyp !! Standardwert | |||
|- | |||
| byte, short, int, long || 0 | |||
|- | |||
| float, double || 0.0 | |||
|- | |||
| boolean || false | |||
|- | |||
| char || '\u0000' | |||
|- | |||
| Referenztypen || null | |||
|} | |||
Beispiel: | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
public class | public class Person { | ||
String | String name; | ||
int | int alter; | ||
boolean aktiv; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Nach | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
Person person = new Person(); | |||
</syntaxhighlight> | |||
gelten zunächst: | |||
<syntaxhighlight lang="text"> | |||
name → null | |||
alter → 0 | |||
aktiv → false | |||
</syntaxhighlight> | |||
public | == Eigener Konstruktor == | ||
Sobald mindestens ein eigener Konstruktor definiert wird, erzeugt der Compiler '''keinen Default-Konstruktor mehr'''. | |||
<syntaxhighlight lang="java"> | |||
public class Person { | |||
String name; | |||
public Person(String name) { | |||
this.name = name; | |||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | Folgender Aufruf ist jetzt nicht mehr möglich: | ||
<syntaxhighlight lang="java"> | |||
Person person = new Person(); // Compilerfehler | |||
</syntaxhighlight> | |||
Es existiert nur der selbst definierte Konstruktor: | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
Person person = new Person("Anna"); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Soll zusätzlich ein Konstruktor ohne Parameter vorhanden sein, muss dieser selbst definiert werden: | |||
<syntaxhighlight lang="java"> | |||
public Person() { | |||
} | |||
public Person(String name) { | |||
this.name = name; | |||
} | |||
</syntaxhighlight> | |||
== 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. | |||
<syntaxhighlight lang="java"> | |||
public Person() { | |||
name = "Unbekannt"; | |||
} | |||
</syntaxhighlight> | |||
Dieser Konstruktor ist '''parameterlos''', aber kein Default-Konstruktor, da er vom Programmierer selbst definiert wurde. | |||
== Kurzmerksatz == | == 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.''' | |||
Aktuelle Version vom 7. September 2026, 10:49 Uhr
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.
