【发布时间】:2019-06-27 10:58:30
【问题描述】:
我知道有很多类似的主题,但我需要问一下,因为规则是“如果类 S 是类 T 的子类型,那么 T 的实例可以被 S 的实例替换,而不会改变 T 的任何理想行为本身。” - 所以每个方法覆盖都违反了规则。我错了吗? 因为每个方法重写都会改变基类。如果不是 - 请举例说明。
【问题讨论】:
标签: c# design-patterns
我知道有很多类似的主题,但我需要问一下,因为规则是“如果类 S 是类 T 的子类型,那么 T 的实例可以被 S 的实例替换,而不会改变 T 的任何理想行为本身。” - 所以每个方法覆盖都违反了规则。我错了吗? 因为每个方法重写都会改变基类。如果不是 - 请举例说明。
【问题讨论】:
标签: c# design-patterns
首先,您需要了解 OOP 中的抽象和多态的概念。
如果 T 是父类,它应该被子类 S 覆盖,因为 T 是虚拟的并且 S 覆盖。 例子: T 可以是带有 CanFly()、CanEat()、CanSee() 方法的 BirdClass()。 然后 S 可以是可以覆盖 CanFly()、CanEat()、CanSee() 方法的 Pegion。 OR Sparrow 可以覆盖父类的 CanFly()、CanEat()、CanSee() 方法。
【讨论】: