Что лучше использовать для повторного использования кода: наследование или композицию?
Уровень: Senior
Ответ
Зависит от ситуации, но часто предпочтительнее композиция. Наследование связывает классы жёстко (is-a отношение) и увеличивает сложность иерархии; его уместно применять, когда подкласс действительно специализирует поведение базового. Композиция же (has-a отношение) позволяет гибче сочетать функциональность: объект включает другие объекты и делегирует им работу. Композицию проще менять в runtime (подменяя компоненты), а наследование определяет поведение на этапе разработки. Принцип SOLID (буква "принцип предпочтения композиции наследованию") рекомендует избыточно не наследоваться, если можно обойтись композицией.