(Implementierungs-Vererbung: schlecht, Schnittstellen-Vererbung: gut.)
Problem: class C extends B
⇒
C hängt ab von Implementations-Details von B.
⇒ wenn Implementierung von B unbekannt, dann korrekte Implementierung von C nicht möglich.
⇒ Wenn man Implementierung von B ändert, kann C kaputtgehen.
Beispiel: class CHS<E> extends HashSet<E>
,
Methoden add
und addAll
,
nach: Bloch: Effective Java, Abschnitt 14 (Favor composition
over inheritance)