22.11.2025
Eine abstrakte Klasse und ein Interface lösen auf den ersten Blick ein ähnliches Problem, nämlich einen Vertrag festzulegen, dem konkrete Klassen folgen müssen. Der entscheidende Unterschied liegt darin, was jede der beiden Konstruktionen tatsächlich mitbringt: Ein Interface ist ein reiner Vertrag ohne jede Implementierung, eine abstrakte Klasse dagegen kann Konstruktoren, geteilten Zustand und konkrete Methoden enthalten, die alle Unterklassen automatisch erben. Dieser Beitrag zeigt an einem durchgehenden Report-Generator-Beispiel, wann welches Werkzeug die richtige Wahl ist, warum die Single-Inheritance-Beschränkung von PHP diese Entscheidung entscheidend prägt und wie beide Konzepte in einer einzigen Klassenhierarchie sauber zusammenspielen.