Sobes.tech
Назад к вопросам
Junior — Middle
69

Можете объяснить, что означает принцип подстановки Лисков в объектно-ориентированном программировании?

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

sobes.tech AI

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

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

Это означает, что подкласс не должен изменять поведение базового класса таким образом, чтобы нарушать ожидания клиента. Например, если базовый класс гарантирует, что метод возвращает положительное число, подкласс не должен возвращать отрицательное.

Пример на Java:

class Bird {
    void fly() {
        System.out.println("Птица летит");
    }
}

class Sparrow extends Bird {
    @Override
    void fly() {
        System.out.println("Воробей летит");
    }
}

// Нарушение LSP
class Ostrich extends Bird {
    @Override
    void fly() {
        throw new UnsupportedOperationException("Страусы не летают");
    }
}

Здесь класс Ostrich нарушает принцип подстановки Лисков, так как не поддерживает поведение базового класса Bird (метод fly).