(一)里氏替换原则定义
子类替换父类(例如:花木兰替父从军)
(二)里氏替换原则的作用
- 里氏替换原则是实现开闭原则的重要方式之一
- 克服了继承中重写父类造成的可复用性变差
- 动作正确性的保证,即类的扩展不会给已有的系统引入新的错误,降低了代码的概率
(三)里氏替换原则的实现
里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能,说明子类继承父类功能时可以添加新功能,但是不能重写父类的方法。
例如:总经理-部门经理--部门主管--员工
总经理是父类,部门经理是总经理的子类,部门主管是部门经理的子类,员工是部门主管的子类,总经理可以任意修改所有人的信息,而部门经理和部门主管只可以修改比自己职位低员工的信息,而不能修改其它部门员工信息或者总经理的信息,或者说该总经理的信息。
(四)代码案例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Design_Pattern
{
class Program
{
static void Main(string[] args)
{
WYN wYN = new Department();
WYN yN = new Manager();
wYN.setWork(80);
yN.setWork(80);
System.Console.WriteLine("门店占集团文化百分比");
try
{
Console.WriteLine("" + wYN.getStudy(80) + "%");
Console.WriteLine("" + yN.getStudy(80) + "%");
}
catch(Exception er)
{
Console.WriteLine("表述错误!");
}
}
}
/// <summary>
/// 公司类
/// </summary>
public class WYN
{
double Work;
public void setWork(double work)
{
Work = work;
}
public double getStudy(double study)
{
return (study / Work);
}
}
/// <summary>
/// 门店继承公司类
/// </summary>
public class Department:WYN{}
/// <summary>
/// 门店部门经理类
/// </summary>
public class Manager : WYN
{
double Work;
public void setWork(double work)
{
Work = 0;
}
}
}
以上代码意思为,一个门店可以占有一个公司的80%文化,但门店的部门经理不能称作咱有一个公司80%的文化。