Вопрос №150
Чем отличаются Наследование и Композиция?
Общее: позволяют повторно использовать существующий код.
Отличия:
1. Наследование требует расширения наследуемого класса.
2. Во многих языках запрещено множественное Наследование. А значит нельзя переиспользовать функционал нескольких разных классов. В Композиции – можно.
3. При Композиции легче писать юнит тесты – делаем заглушки. При Наследовании это сделать сложнее – не получится заменить заглушкой родительский класс.
4. При наследовании класс-потомок зависит от функционала класса-родителя. Ломается родитель – ломается и потомок.
Итог: когда нужно использовать класс как таковой без каких-либо изменений, рекомендуется Композиция, а когда нужно изменить поведение метода в другом классе, рекомендуется Наследование.
Post #565
126
