Допустим, у нас есть действительно тривиальные классы:
class A
{
virtual int Function(int number)
{
return number;
}
}
class B : A
{
override int Function(int number)
{
return number + 1;
}
}
class UseExample
{
void Foo(A obj)
{
A.Function(1);
}
}
Будет ли этот пример нарушением LSP ?. Если да, не могли бы вы привести пример, который не нарушает принцип и использует другую реализацию?
А как насчет этого:
class B : A
{
int variable;
override int Function(int number)
{
return number + variable;
}
}
Насколько я понял, использование переменной "переменная" вызывает более сильное предварительное условие и, следовательно, нарушает LSP. Но я не совсем уверен, как следовать LSP при использовании полиморфизма.