Konstruktoren und Standardkonstruktoren in Java
Was ist ein Konstruktor?
Ein Konstruktor ist eine spezielle Methode in Java, die verwendet wird, um ein neues Objekt einer Klasse zu initialisieren, sprich die Attribute mit sinnvollen Werten belegen. Ein Konstruktor wird aufgerufen, wenn ein neues Objekt mit dem Schlüsselwort new erstellt wird.
Eigenschaften eines Konstruktors
- Ein Konstruktor hat keinen Rückgabewert (nicht einmal
void). - Der Name des Konstruktors ist immer identisch mit dem Namen der Klasse.
- Konstruktoren können Übergabe-Parametern haben, um das Objekt beim Erstellen zu konfigurieren.
Standardkonstruktor
Der Standardkonstruktor hat keine Übergabe-Parameter und erstellt das Objekt und vergibt für alle Attribute Standardwerte. Programmiert man keinen Konstruktor in einer Klasse, wird automatisch ein Standardkonstruktor von Java erstellt, der z.B. alle ganzzahligen Attribute auf 0 setzt.
Beispiel für eine Klasse mit einem Standardkonstruktor:
public class AUTO {
// Attribute
private String farbe;
private int anzahlRaeder;
// Standard-Konstruktor
public AUTO() {
this.farbe = "silber";
this.anzahlRaeder = 4;
}
}
Beispiel: Konstruktor in einer Klasse
Hier ist eine Klasse mit einem Konstruktor mit Übergabe-Parameter:
public class Auto {
private String farbe;
private int anzahlRaeder;
// Spezieller Konstruktor (mit Übergabe-Parametern)
public Auto(String farbe, int anzahlRaeder) {
this.farbe = farbe;
this.anzahlRaeder = anzahlRaeder;
}
}
Mit diesem Konstruktor können nun neue Autos erzeugt werden durch, z.B. durch den Aufruf von new AUTO("blau",4) oder new AUTO("gelb",3). Dabei wird der Wert des Übergabe-Parameter farbe auf "blau" (oder "gelb") gesetzt. Dadruch wird die Zeile this.farbe = farbe; beim Aufruf des Konstruktors ersetzt durch this.farbe = "blau";. Da man mit this. auf Attribute zugreifen kann, wird somit der Wert des Attributs farbe auf "blau" gesetzt.
Konstruktor und Standardkonstruktor kombiniert
Du kannst sowohl einen eigenen Konstruktor als auch einen expliziten Standardkonstruktor in einer Klasse definieren:
public class AUTO {
// Attribute
private String farbe;
private int anzahlRaeder;
// Konstruktoren
public AUTO() {
this.farbe = "silber";
this.anzahlRaeder = 4;
}
public AUTO(String farbe, int anzahlRaeder) {
this.farbe = farbe;
this.anzahlRaeder = anzahlRaeder;
}
}
Verwendung der Konstruktoren
Beispiel für die Erstellung von Objekten mit verschiedenen Konstruktoren:
// Ein neues Objekt der Klasse AUTO erstellen
AUTO meinAuto = new AUTO("Rot", 6);
// Methode aufrufen
meinAuto.starten();
// ein silbernes Auto mit vier Rädern erstellen
AUTO meinZweitAuto = new AUTO();
Was passiert im Beispiel?
- Ein AUTO-Objekt namens
meinAutowird erstellt, wobei die Farbe "Rot" und die Anzahl der Räder 4 sind. - Die Methode
starten()wird aufgerufen und gibt als Antwort "brumm brumm" zurück. - Ein weiteres AUTO-Objekt namens
meinZweitAutowird erstellt, wobei die Farbe "Silber" und die Anzahl der Räder 4 sind.
Zusammenfassung: Ein Konstruktor...
- ist eine Methode
- wird automatisch aufgerufen, wenn ein neues Objekt erzeugt wird
- initialisert alle Attribute (sprich belegt sie mit sinnvollen Werten)
- hat den gleichen Namen wie die Klasse und keinen Rückgabetyp