Ответ
Композиция классов — это принцип ООП, где один класс содержит экземпляры других классов, образуя отношение "часть-целое". В отличие от наследования, композиция обеспечивает более гибкую структуру, позволяя изменять поведение во время выполнения.
Пример:
class Engine {
fun start() { println("Engine started") }
}
class Car {
private val engine = Engine() // композиция
fun start() {
engine.start()
}
}
Преимущества:
- Лучшая инкапсуляция (внутренняя реализация скрыта)
- Гибкость (можно менять компоненты динамически)
- Избегание проблем хрупкого базового класса
Композиция предпочтительнее наследования, когда нет строгой иерархии "is-a".