Junior — Middle
56
Можете привести пример ситуации, где принцип Лисков нарушается при использовании наследования или замены подкласса?
Ответ от нейросети
sobes.tech AI
Принцип подстановки Лисков (Liskov Substitution Principle, LSP) нарушается, когда подкласс изменяет поведение базового класса так, что объекты подкласса не могут заменить объекты базового класса без изменения корректности программы.
Пример на Python:
class Bird:
def fly(self):
print("Я лечу")
class Sparrow(Bird):
pass
class Ostrich(Bird):
def fly(self):
raise Exception("Страус не умеет летать")
# Использование
birds = [Sparrow(), Ostrich()]
for bird in birds:
bird.fly() # Здесь Ostrich нарушает LSP, так как вызывает исключение вместо полёта
Здесь класс Ostrich наследует Bird, но метод fly ведёт себя иначе — выбрасывает исключение, тогда как базовый класс предполагает, что метод fly всегда работает. Это нарушает LSP, так как код, работающий с объектами Bird, не сможет корректно работать с Ostrich.