az4215

设计模式六大原则:里氏替换原则

里氏替换原则:

  子类应当可以替换父类并出现在父类能够出现的地方。比如:公司搞年度派对,都有员工都可以抽奖,那么不管是新员工还是老员工,也不管是总部员工还是外派员工,都应当可以参加抽奖。

案例:

 1 internal class Program
 2 {
 3     private static void Main(string[] args)
 4     {
 5         A a = new A();
 6         Console.WriteLine($"100-50={(a.func1(100, 50))}");
 7 
 8         B b = new B();
 9         Console.WriteLine($"100-50={(b.func1(100, 50))}");
10         Console.WriteLine($"100-50={(b.func2(100, 50))}");
11 
12         Console.ReadKey();
13     }
14 }
15 
16 internal class A
17 {
18     public int func1(int num1, int num2)
19     {
20         return num1 - num2;
21     }
22 }
23 
24 internal class B : A
25 {
26     //public int func1(int num1, int num2)
27     //{
28     //    return num1 + num2;
29     //}
30 
31     public int func2(int num1, int num2)
32     {
33         return func1(num1, num2) + 100;
34     }
35 }
view code

  由上述代码可以看出,若类B在继承类A时不注意,重写了父类方法func1就会导致结果与预想的不一致,改变了父类原有的功能。故里氏转换原则应满足以下要求:

  1、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法

  2、子类可以增加自己特有的方法

  3、当子类的方法重载父类的方法时,方法的形参要比父类方法的输入参数更宽松

  4、当子类的方法实现父类的抽象方法时,方法的返回值应比父类更严格

优点:

  可以大大减少程序的bug以及增强代码的可读性

分类:

技术点:

相关文章:

  • 2021-05-05
  • 2021-02-22
  • 2021-11-28
  • 2021-04-18
  • 2021-10-03
  • 2021-10-24
猜你喜欢
  • 2021-12-24
  • 2019-08-05
  • 2021-05-29
  • 2021-12-25
  • 2021-05-20
  • 2019-09-26
  • 2021-11-26
相关资源
相似解决方案