Sobes.tech
Назад к вопросам
Middle
1

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

Компании, где спрашивали
Navio

Ответ от нейросети

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. Правильнее было бы спроектировать иерархию иначе, например, выделить летающих птиц в отдельный класс.