SOLID.LSP + ООП.Полиморфизм = противоречиe? После изучения разных источников о Liskov Substitutioin Principle , так и не нашел ответа на вопрос:
Как LSP сочетается с полиморфизмом в ООП?
Ведь судя по определению, LSP предписывает наследникам сохранять поведение (контракт) базового класса.
Тогда как полиморфизм - это способность изменять поведение методов базового класса в наследниках. Если трактовать LSP буквально, то я вижу в этих подходах однозначное противоречие.
Собственно, как его разрешить?

21 Авг 2019 в 06:57
142 +1
0
Ответы
1

Действительно, на первый взгляд может показаться, что Liskov Substitution Principle и полиморфизм противоречат друг другу. Однако, в действительности они не противоречат, а работают вместе.

LSP гласит, что объекты базового класса должны быть заменяемы объектами их подклассов без нарушения корректности программы. Это означает, что поведение наследников должно быть совместимо с поведением базового класса. При этом полиморфизм позволяет использовать различные реализации одного и того же метода в разных классах, что в свою очередь позволяет наследникам изменять поведение методов базового класса, сохраняя при этом контракт.

Таким образом, LSP и полиморфизм работают в тесной связи, позволяя создавать гибкую и расширяемую систему объектов в объектно-ориентированном программировании. Важно лишь следить за тем, чтобы наследники не нарушали контракт базового класса при изменении его поведения.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир