Constructors (Konstruktoren)
Kurz: Eine spezielle Methode, die automatisch aufgerufen wird, wenn ein neues Objekt einer Klasse erzeugt wird — meist genutzt, um die Anfangswerte der Felder zu setzen.
Genauer: Ein Konstruktor trägt üblicherweise denselben Namen wie die Klasse und hat keinen Rückgabetyp (auch nicht void). Über Overloading kann eine Klasse mehrere Konstruktoren mit unterschiedlichen Parameterlisten anbieten, etwa einen ohne Argumente (Standardwerte) und einen, der alle Felder direkt beim Erzeugen setzt.
Im Detail
class Person {
name
alter
Konstruktor(name, alter) {
this.name = name
this.alter = alter
}
}
p = neue Person("Alex", 30) // ruft den Konstruktor automatisch aufDefiniert eine Klasse selbst keinen eigenen Konstruktor, stellt der Compiler/Interpreter in vielen Sprachen automatisch einen unsichtbaren “Standardkonstruktor” ohne Parameter bereit, der einfach nichts weiter tut außer das Objekt anzulegen. Sobald man aber EINEN eigenen Konstruktor definiert, verschwindet dieser automatische Standardkonstruktor in den meisten Sprachen (z. B. Java) — will man weiterhin auch ohne Argumente erzeugen können, muss man diesen Fall explizit selbst mit anbieten.
Ein verwandtes Konzept in vielen Sprachen ist der Konstruktor-Verkettung: Ein Konstruktor kann einen anderen, ausführlicheren Konstruktor derselben Klasse aufrufen, um Code nicht doppelt zu schreiben:
class Person {
Konstruktor(name) {
Konstruktor(name, 0) // ruft den zweiten Konstruktor mit auf
}
Konstruktor(name, alter) {
this.name = name
this.alter = alter
}
}Anders als eine normale Methode kann ein Konstruktor nicht “später” aufgerufen werden — er läuft garantiert genau einmal, im Moment der Objekterzeugung, und ein Objekt existiert im Programm faktisch nie ohne dass sein Konstruktor durchgelaufen ist. Das macht ihn zum idealen Ort, um Invarianten sicherzustellen, die für das gesamte restliche Leben des Objekts gelten sollen (siehe Kapselung).
Siehe auch: Classes, Objects, this-Keyword