Можете объяснить, что означает принцип подстановки Лисков в объектно-ориентированном программировании?
Ответ от нейросети
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).