zoukankan      html  css  js  c++  java
  • 设计模式 里氏替换原则

    如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。

    有点绕口,通俗的讲:

    B类继承A类后,可以新增功能,但尽量不要重写A类的方法,也不要重载A类后方法。

    子类可以扩展父类的功能,但不能改变父类原有的功能:

    • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
    • 子类中可以增加自己特有的方法。
    • 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
    • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

    我们有一个类实现减法:

    class MathFormula{
      public int Math1(int a,int b){
            return a - b;
        }
      }

    还有个继承的办法

    class MathSumFormula:MathFormula{
      public int Math1(int a,int b){
                return a + b;
       }
       public int Math2(int a,int b){
                return Math1(a, b) + 100;
        }
     }

    因为无意重写了Math1所以导致结果错误。

    MathSumFormula mathSumFormula = new MathSumFormula();
    Console.WriteLine(mathSumFormula.Math2(10,10));
  • 相关阅读:
    python
    图片放大,缩小等操作
    template-web.js 自定义过滤器
    python
    python
    Android Volley源码分析及扩展
    Android 6.0动态权限申请教程
    Jarsigner签名使用
    Python正则表达式(总)
    Python错误和异常概念(总)
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/9373820.html
Copyright © 2011-2022 走看看