当Liskov Substitution引用子类型时,它是否在C#的上下文中讨论派生类?

Nib*_*Pig 6 c# oop solid-principles

在查看维基百科文章后,我对"子类型"一词不熟悉.

我把Liskov替换意味着,如果你有接受一个方法Animal,你应该能够在通过CatAnimal在那里Cat : Animal没有任何意想不到的副作用.

这是Liskov替换所指的吗?

Bri*_*new 3

确切地。任何接受 Animal 的东西都应该能够接受 Dog、Cat 和子类(品种,如果你喜欢的话)。这些方法将是兼容的。

还要注意,子类型中的前提条件不能被加强,后置条件也不能被削弱。否则,您可以插入特定的子类型,这会破坏,因为周围的代码强加了子类无法容忍的某些先决条件。这在实践中可能很难实现 -有关更多信息,请参阅圆/椭圆问题。