Об этом меня спросили в интервью.
Я ответил ему, сказав, что для одного и того же набора входных данных и родитель, и дочерний элемент должны производить одинаковый набор выходных данных. Если дочерний элемент хочет расширить функциональность родителя, это следует делать только для новых входных данных за пределами диапазона, поддерживаемого родителем. Таким образом, ребенок будет поддерживать контракт, заключенный его родителем.
Я привел ему пример, что API может использовать такого родителя
if(parent.getOutput(10) == 5){/*do something */}
Если дочерний элемент произвел здесь другой вывод, то этот дочерний элемент нарушил контракт, заключенный его родителем.
Его не удовлетворил мой ответ, и он сказал мне, что это просто переопределение, а не нарушение LSP. Итак, я просто хочу подтвердить, правильно ли я понимаю это.