Объясните смысл и применение принципа подстановки Лисков в объектно-ориентированном программировании.
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.
Правильный подход — пересмотреть иерархию или разделить интерфейсы, чтобы подклассы не вынуждены были реализовывать неподдерживаемые операции.