Топы
Объясните Liskov Substitution Principle (принцип подстановки Барбары Лисков).
Если в коде программы Базовый класс заменить на его Наследника, то программа должна работать, так как в Наследнике есть все операции, которые были в Базовом. В Базовый класс нужно выносить только общую логику, которую наследники будут реализовывать. Наследников создаем только тогда, когда они правильно собираются реализовать логику Базового класса без проблем.
Пусть есть человек, который умеет только есть и спать
И есть студент, который наследуется от Person. Он, помимо есть и спать, может еще учиться
И он умеет делать все то, что умеет человек. Потому что студент — это человек, кто бы что не говорил.
Пример нарушения всех мыслимых и немыслимых норм мог бы быть таким:
Тут студента уже нельзя назвать человеком. Потому что он не делает все то же, что и человек, плюс что-то дополнительно. Ну и ведет себя как не будем говорить кто.
Наследник ведь расширяет интерфейс. Значит, только добавляет дополнительный функционал (говорили про это в Open-Closed). Значит, он не должен ломать то, что написано раньше.
Отметьте свой прогресс