Sobes.tech
Junior — Middle
68

В чем заключается основное отличие между использованием наследования и композиции в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

Основное отличие между наследованием и композицией в ООП заключается в том, что наследование описывает "является" (is-a) отношение, а композиция — "имеет" (has-a) отношение.

  • Наследование позволяет создавать новый класс на основе существующего, наследуя его свойства и методы. Это удобно, когда новый класс является специализированной версией базового.

  • Композиция предполагает, что объект одного класса содержит объекты других классов, используя их функциональность. Это более гибкий способ повторного использования кода и позволяет менять поведение во время выполнения.

Пример на Python:

class Engine:
    def start(self):
        print("Двигатель запущен")

class Car:
    def __init__(self):
        self.engine = Engine()  # композиция
    def start(self):
        self.engine.start()

class ElectricCar(Car):  # наследование
    def start(self):
        print("Электрокар готов к движению")

Здесь ElectricCar наследует Car (является автомобилем), а Car использует Engine через композицию (имеет двигатель).