Ein Konstruktor ist eine spezielle Methode, die beim Erzeugen eines Objekts automatisch aufgerufen wird. Seine Aufgabe: das neue Objekt in einen definierten Ausgangszustand bringen — Attribute mit Startwerten belegen, Ressourcen öffnen, Invarianten aufbauen.

Warum ein Konstruktor?

Ohne Konstruktor müsste jedes Programm nach der Objekterzeugung selbst dafür sorgen, dass alle Attribute gültige Werte haben — leicht vergessen, leicht inkonsistent. Der Konstruktor erzwingt die Initialisierung: Ein Objekt existiert erst, wenn sein Zustand vollständig aufgebaut ist.

Konstruktoren in verschiedenen Sprachen

# Python
class Punkt:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

p = Punkt(3, 4)
// Java
public class Punkt {
    private int x, y;
    public Punkt(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

In Python heißt der Konstruktor __init__; in Java, C++ und C# trägt er den Klassennamen. Er hat keinen Rückgabetyp — nicht einmal void.

Parameter und Überladen

Konstruktoren nehmen Parameter entgegen und können wie normale Methoden überladen werden: Java bietet mehrere Konstruktoren mit unterschiedlichen Parameterlisten an, Python nutzt Default-Werte. Ein Objekt, das mit einem Datentyp-spezifischen Konstruktor erzeugt wird, ist sofort vollständig konfiguriert.

Das Gegenstück: Destruktor

Der Destruktor räumt beim Löschen des Objekts auf (Ressourcen wie Dateien oder Verbindungen freigeben). Sprachen mit automatischer Speicherverwaltung wie Python und Java benötigen ihn kaum; C++ setzt ihn gezielt über den Namen mit vorangestellter Tilde (~Punkt) ein.

Zusammenspiel mit der Objektorientierung

Konstruktoren sind der erste Lebenszyklus-Schritt einer Klasse. Zusammen mit Kapselung — die den Zugriff auf die initialisierten Attribute kontrolliert — und Polymorphie — die über Konstruktor-Aufrufe konkrete Objekte entstehen lässt — ergibt sich das vollständige Bild der Objektorientierung. Grundbausteine daneben: Variable, Funktion und Prozedur.