Что такое композиция классов

«Что такое композиция классов» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

class Engine {
    fun start() { println("Engine started") }
}

class Car {
    private val engine = Engine() // композиция

    fun start() {
        engine.start()
    }
}

Преимущества:

  • Лучшая инкапсуляция (внутренняя реализация скрыта)
  • Гибкость (можно менять компоненты динамически)
  • Избегание проблем хрупкого базового класса

Композиция предпочтительнее наследования, когда нет строгой иерархии "is-a".