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 через композицию (имеет двигатель).