gpt4 book ai didi

liskov-substitution-principle - Liskov 替换原则 - 覆盖方法示例

转载 作者:行者123 更新时间:2023-12-04 08:44:46 24 4
gpt4 key购买 nike

假设我们有这个非常简单的类:

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;
}
}

据我所知,使用变量“variable”会导致更强的先决条件,因此它违反了 LSP。但是我不完全确定在使用多态时如何遵循 LSP。

最佳答案

这是有效的,在这两种情况下它都没有违反原则。 B 可以代替 A。它只是具有不同的功能。

打破契约(Contract)的一种简单方法是如果数字 == 23 或其他内容,则在 Bs 覆盖中抛出异常:)

关于liskov-substitution-principle - Liskov 替换原则 - 覆盖方法示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com