什么是里氏替换原则以及如何在 C# 中实现?
派生类型必须完全可替代其基类型。
定义:
我们应该能够将子类视为父类。本质上,这意味着所有派生类都应保留其父类的功能,并且不能替换父类提供的任何功能。
在 Liskov 替换之前
public class Ellipse { public double MajorAxis { get; set; } public double MinorAxis { get; set; } public virtual void SetMajorAxis(double majorAxis){ this.MajorAxis = majorAxis; } public virtual void SetMinorAxis(double minorAxis){ this.MajorAxis = minorAxis; } public virtual double Area() { return MajorAxis * MinorAxis * Math.PI; } } public class Circle : Ellipse { public override void SetMajorAxis(double majorAxis) { base.SetMajorAxis(majorAxis); this.MinorAxis = majorAxis; //In a cirle, each axis is identical } } public class Result { public void Method1() { Circle circle = new Circle(); circle.SetMajorAxis(5); circle.SetMinorAxis(4); var area = circle.Area(); //5*4 = 20, but we expected 5*5 = 25 } }登录后复制