--- aliases: - LSP - Принцип подстановки Барбары Лисков tags: - maturity/🌱 date: 2024-09-27 zero-link: - "[[../garden/ru/meta/zero/00 Архитектура ПО|00 Архитектура ПО]]" parents: - "[[SOLID|SOLID]]" linked: --- Объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения поведения программы. Это значит, что подклассы не должны изменять базовую логику родительских классов или нарушать их контракт. - **Пример нарушения LSP**: Подкласс переопределяет методы родительского класса, изменяя их поведение, что приводит к непредсказуемым результатам при работе с кодом через базовый класс. - **Решение**: Подклассы должны следовать контракту базового класса, не нарушая его поведение. ```java public class Bird { public void fly() { // Птица летает } } public class Penguin extends Bird { @Override public void fly() { // Пингвин не может летать — нарушение LSP } } ``` Вместо этого можно выделить разные классы для летающих и нелетающих птиц, чтобы избежать нарушения принципа подстановки. *** ## Мета информация **Область**:: [[../../meta/zero/00 Архитектура ПО|00 Архитектура ПО]] **Родитель**:: [[SOLID]] **Источник**:: **Создана**:: [[2024-09-27]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки