【问题标题】:liskov substitution principle again - each method overriding violates the principleliskov 替换原则再次 - 每个方法覆盖都违反了原则
【发布时间】:2019-06-27 10:58:30
【问题描述】:

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

【问题讨论】:

标签: c# design-patterns


【解决方案1】:

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

如果 T 是父类,它应该被子类 S 覆盖,因为 T 是虚拟的并且 S 覆盖。 例子: T 可以是带有 CanFly()、CanEat()、CanSee() 方法的 BirdClass()。 然后 S 可以是可以覆盖 CanFly()、CanEat()、CanSee() 方法的 Pegion。 OR Sparrow 可以覆盖父类的 CanFly()、CanEat()、CanSee() 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2010-12-16
    • 2020-02-03
    • 2012-03-16
    相关资源
    最近更新 更多