Обзор темы [Рефакторинг кода]

Замена наследования делегированием

(Replace Inheritance with Delegation)

Подкласс использует только часть интерфейса суперкласса или не хочет наследовать данные.

Создать поле для указателя на суперкласс, переделать методы под обращение по этой ссылке и упразднить наследование.

В принципе можно описать подкласс, который будет использовать только часть возможностей суперкласса, но такие подклассы только все путают. Поэтому лучше пользоваться делегированием, при котором можно четко описать, какая часть возможностей будет использоваться. Плата за четкость – куча делегирующих методов, которые надо писать отдельно.