この本当に些細なクラスがあるとしましょう:
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 に従う方法が完全にはわかりません。