假设我们有这个非常简单的类:
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。