LSP原则 - 如果D是B的子类型,则程序中类型B的对象可以用类型D的对象替换,而不改变该程序的任何所需属性。
例如:
Derived d = new Derived();
Base b = new Base();
//as per the principle, the below code should work
b = new Derived();
b = d;
.Net框架负责这一点。作为开发人员,我与此无关。那么定义这样的原则有什么用呢?
答案 0 :(得分:1)
作为一名开发人员,你可能会犯错,并以某种方式编写代码S
,这使得它不能替代T
,即使语言和运行时不妨碍你使用它因此 - 这可能是语言中的行为(例如,在S
中抛出异常,T
没有),或者是违反{{1}所宣传的副作用限制的副作用},ad nauseam
有关示例
,请参阅Can you explain Liskov Substitution Principle with a good C# example?