Junior — Middle
70
Puoi fare un esempio di una situazione in cui il principio di Liskov viene violato durante l'uso dell'ereditarietà o della sostituzione di sottoclassi?
Risposta dell'AI
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.