【发布时间】:2021-11-29 07:43:08
【问题描述】:
Liskov 替换原则指出,您应该编写类继承,以便将子类型交换为其基类型不会因此而改变应用程序的行为。
然而,virtual 关键字的存在似乎允许子类型的行为不同于基本类型。虚拟/覆盖关键字的大多数使用(不包括覆盖抽象成员)不会违反 Liskov 吗?我觉得这可能比我理解的更多细微差别。也许这是“规则存在有时会被打破”的情况,或者原则的“不采取不同的行为”部分可能存在灰色区域。
【问题讨论】:
-
wont change the behavior of your application by doing so.不,它没有这么说。你从哪里读到这个定义的? -
@mjwills 是我对原理的理解,貌似有缺陷
标签: c# virtual design-principles liskov-substitution-principle