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

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

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

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

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

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