3. L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)
Объекты подклассов должны быть взаимозаменяемы с объектами базового класса.
Подкласс не должен ломать поведение родителя.
Если где-то ожидается Animal, то можно безопасно передать Dog или Cat,
не изменяя результат работы программы.
Пример:
class Bird { void fly() { System.out.println("Летит"); } } class Duck extends Bird { @Override void fly() { System.out.println("Утка летит"); } } // Нарушение — пингвин не летает class Penguin extends Bird { @Override void fly() { throw new UnsupportedOperationException("Пингвин не летает!"); } }
