PS: Und dann sollte man Instanzen nicht einfach dem Konstruktor einer fremden Klasse übergben. Sowas ist schwer zu debuggen. Wenn man die Funktionaliät einer fremden Klasse benötigt, ist zu überlegen ob man:
- Vererbung nutzt und alle Methoden/Eigenschaften erbet
- oder nur einzelne Methoden delegiert
Genau das Gegenteil ist der Fall. Vererbung und Methoden-Delegation sorgen für eine enge Kopplung zwischen den Klassen. Komposition hingegen sorgt für lose Kopplung. So kann man die Klassen dann auch getrennt voneinander testen. Außerdem kommt bei Vererbung das Diamant Problem hinzu.