Ответ
Наследование — это механизм ООП, позволяющий классу (дочернему, производному) получать свойства и методы другого класса (родительского, базового), расширяя или изменяя его функциональность.
Ключевые принципы:
- Повторное использование кода: Избегание дублирования общей логики.
- Создание иерархии: Логическая организация классов (например,
Vehicle→Car→ElectricCar). - Полиморфизм: Возможность переопределения методов в дочерних классах.
Пример на Python:
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
return "Some generic sound"
class Dog(Animal): # Dog наследует от Animal
def make_sound(self): # Переопределение метода
return "Woof!"
def fetch(self): # Добавление нового метода
return f"{self.name} fetches the ball."
my_dog = Dog("Rex")
print(my_dog.make_sound()) # Вывод: Woof!
print(my_dog.fetch()) # Вывод: Rex fetches the ball.
Практические аспекты и ограничения:
- Глубина иерархии: Слишком глубокая цепочка наследования усложняет понимание и поддержку кода.
- Проблема хрупкого базового класса: Изменения в родительском классе могут неожиданно сломать работу дочерних.
- Композиция vs. Наследование: Часто предпочтительнее использовать композицию (включение объектов), так как она обеспечивает более гибкую и слабосвязанную архитектуру.
- Множественное наследование: Поддерживается не во всех языках (есть в Python, C++), может приводить к неоднозначностям (например, "проблема ромба").