Sobes.tech
Back to questions
Middle
2

Принцип Liskov Substitution — расскажите подробнее

Companies where asked
Navio

Answer from AI

sobes.tech AI

Принцип подстановки Лисков (Liskov Substitution Principle, LSP) — один из пяти принципов SOLID, который гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.

Это значит, что если класс B наследуется от класса A, то везде, где ожидается объект A, можно использовать объект B без изменения поведения программы.

Нарушение LSP приводит к неожиданным ошибкам и усложняет поддержку кода.

Пример нарушения LSP в Python:

class Bird:
    def fly(self):
        print("I can fly")

class Ostrich(Bird):
    def fly(self):
        raise Exception("I can't fly")

# Использование
birds = [Bird(), Ostrich()]
for bird in birds:
    bird.fly()  # Ошибка для страуса

Здесь Ostrich наследует Bird, но не поддерживает метод fly, что нарушает LSP. Правильнее было бы спроектировать иерархию иначе, например, выделить летающих птиц в отдельный класс.