Sobes.tech
Back to questions
Junior — Middle
62

Объясните смысл и применение принципа подстановки Лисков в объектно-ориентированном программировании.

Answer from AI

sobes.tech AI

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

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

Применение LSP помогает создавать иерархии классов, где подклассы расширяют функциональность базового класса, не изменяя его ожидаемое поведение. Это улучшает поддержку, расширяемость и надежность кода.

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

class Bird {
    public virtual void Fly() { /* реализация полёта */ }
}

class Ostrich : Bird {
    public override void Fly() {
        throw new NotSupportedException("Страусы не летают");
    }
}

Здесь Ostrich наследует Bird, но не может корректно реализовать метод Fly, что нарушает LSP.

Правильный подход — пересмотреть иерархию или разделить интерфейсы, чтобы подклассы не вынуждены были реализовывать неподдерживаемые операции.