LSP原则指出:“派生类型不能改变基类型的行为”,换句话说,“派生类型必须完全可以替换其基类型。”
这意味着,如果在基类中定义虚方法,我们就违反了这个原则。
同样地,如果我们使用new关键字在派生类型中隐藏一个方法,那么我们也违反了这个原则。
换句话说,如果我们使用多态,就违反了LSP!
在许多应用程序中,我们在基类中使用虚方法,现在我意识到这违反了LSP。如果您使用模板方法模式,则会违反此原则,而我经常使用它。
那么,当您需要继承并希望从多态中受益时,如何设计符合此原则的应用程序?我感到很困惑!
请参阅此处的示例:http://www.oodesign.com/liskov-s-substitution-principle.html