История изменений
Исправление KivApple, (текущая версия) :
Хорошо. Тогда я хочу заявить, что рассмотрение данного вопроса не имеет смысла без указания, какие контракты определены для setWidth и setHeight. Если же у метода нет чёткого контракта, то он явно не соответствует этому вашему принципу Лисков, ибо вызывающему метод объекту в этом случае не получится абстрагироваться от конкретной реализации и придётся проверять реальный класс объекта (а то мало ли, вдруг setWidth одного из потомков прямоугольника делает rm -rf /).
Исходная версия KivApple, :
Хорошо. Тогда я хочу заявить, что рассмотрение данного вопроса не имеет смысла без указания, какие контракты определены для setWidth и setHeight. Если же у метода нет чёткого контракта, то он явно не соответствует этому вашему принципу Лисков, ибо вызывающему метод объекту в этом случае не получится абстрагироваться от конкретной реализации и придётся проверять реальный класс объекта.