Vererbung bricht Kapselung

(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)



Johannes Waldmann 2014-07-10