Вход на сайт
Резюме для программиста
89957 просмотров
Перейти к просмотру всей ветки
в ответ MrSanders 20.09.21 14:55
Почему? Не вижу. То что B и D перестают из Method1 вызывать Method2 это не нарушение. Изменили поведение - да, но никакой инвариант не сломали.
Потому что принцип фактически сводится к "наследуемый класс должен дополнять, а не замещать поведение базового объекта".
т.е. если ты сделаешь тест для класса А и этот тест выдал зелененький результат, то тест с объектом класса Б (Б унаследован от А) тоже должен давать зеленый результат.
При этом в случае с new есть еще одна засада - программист, который использует Б должен знать делали реализации.
Так что в этом примере плохо абсолютно все.