liskov替换原理再次-每种方法重写都违反该原理

时间:2019-06-27 10:58:30

标签: c# design-patterns

我知道有很多类似的主题,但是我需要问一下,因为规则是“如果类S是类T的子类型,则可以用S的实例替换T的实例,而不会改变T的任何理想行为。本身。” -因此,每个方法重写都违反规则。我错了吗? 因为每个方法重写都会更改基类。如果没有,请举个例子。

1 个答案:

答案 0 :(得分:1)

首先,您需要了解OOP中的抽象和多态性的概念。

如果T是父类,则假定T是虚拟的并且S被覆盖,则它应该被子类S覆盖。 例: T可以是具有CanFly(),CanEat(),CanSee()方法的BirdClass()。 然后,S可以是可以覆盖CanFly(),CanEat(),CanSee()方法的Pegion。 或可以覆盖父类的CanFly(),CanEat(),CanSee()方法的Sparrow。