Я слышал это favor composition over inheritance
снова и снова в шаблонах дизайна. некоторые из приведенных причин:
1)Inheritance is strongly coupled where as composition is loosely coupled
2) Inheritance is compile time determined where as composition is run-time
3)Inheritance breaks encapsulation where as composition does not
4) anything else I am not aware of
Было бы здорово, если бы новички, как и мне, следовали этим иллюстрациям, как наследование и композиция отличаются по отношению к вышеприведенным пунктам. Я прочитал различные ссылки SO, которые говорят о них, но прохождение примеров по этим ключевым моментам было бы замечательно для начинающих Java.
Я думаю, что очень важно понять разницу, а не просто запоминать точки.