首页 > 其他分享 >里氏替换原则

里氏替换原则

时间:2023-07-07 16:31:51浏览次数:37  
标签:子类 原则 里氏 基类 父类 方法 替换

里氏替换原则,面相对象设计的基本原则之一。里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承服用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏替换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏替换原则是对实现抽象化的具体步骤的规范。

里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。

它包含以下4层含义:

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

子类中可以增加自己特有的方法。

当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

当子类的的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

标签:子类,原则,里氏,基类,父类,方法,替换
From: https://blog.51cto.com/u_11315052/6654342

相关文章

  • 设计模式之类之间的关系和六大原则
    1类之间的关系类与类之间的关系大概有6种,要看懂UML图,首先需要了解这几种关系。1.1继承关系继承指的是一个类(称为子类,子接口)继承另外的一个类(成为父类,父接口)的功能,并可以增加它自己的新功能的能力。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或......
  • C# 替换字典的键或值
    因为ElementAt(index)方法是只读的,不能改动键或值,需要通过ToDictionary方法usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;classMainClass{publicstaticvoidMain(){Dictionary<string,int>testDict=newDictionary<string,......
  • 使用Autofac替换Asp.net core内置的依赖注入容器
    Autofac是一个依赖注入容器。Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成。通常情况下,Asp.netcore内置的依赖注入实现已经足够用了,但Autofac确实提供了更多强大的功能,比如基于属性的注入,动态代......
  • 正点原子内存管理实验室,keil mdk 和stm32cubeide gcc的函数替换
    https://www.cnblogs.com/RegressionWorldLine/p/11968467.html转载记录下 STM32.ld链接文件分析及一次bug解决过程问题描述原子板的代码中含有一个关于使用外部SRAM的功能,由于本人的开发板的SRAM只有512K,因此稍微修改了一下代码,同时使用GCC进行编译,但是这里却报错了,源码如......
  • 182_Power BI 使用 DAX 按照先进先出原则计算毛利润
    182_PowerBI使用DAX按照先进先出原则计算毛利润一、背景在笔者以往的文章中也有先进先出的案例,可以参考(https://jiaopengzi.com/?s=先进先出)。今天我们来看一个网友提出的问题,先进先出的原则,入库和出库的价格都是不统一的。按照出库的日期来计算先进先出的sku的毛利(......
  • MYSQL数据库转DM达梦数据库函数替换及注意事项
    1、调整IF函数为 case 函数MYSQL: IF(condition, value_if_true, value_if_false) if(a.class_sort_code='0301',(selectgroup_concat(sku_attr_id)sku_Attrfroma_sku_attr_relaWHEREmodel_id=a.model_idorderbysku_attr_id),'')sku_attrD......
  • 与 TDengine 性能直接相关——3.0 的落盘机制优化及使用原则
    许多用户会有一个疑问,“落盘”俩字听起来就很底层,似乎无法和手头的性能问题联系到一起,本篇文章的目的就是让大家对它们俩建立起直观的认识。写到数据库的数据总要保存起来——所以时序数据库(TimeSeriesDatabase)TDengine中经常提到的“落盘”,其实指的是内存中的数据持久化到存......
  • happens-before 原则
    happens-before简述从JDK5开始,Java使用新的JSR-133内存模型。JSR-133使用happens-before的概念来阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是在一......
  • python脚本实现将md文件中的图片替换为本地存储
    实现将md文件中的网络图片下载下来,保存到本地./typora-img/{filename}目录,并且会将md文件中的图片地址替换为本地地址#代码参考:https://blog.csdn.net/weixin_34090643/article/details/91435765importrequestsimportreimportosfromitertoolsimportchainimportfn......
  • RNN预测模型做多输入单输出预测模型,直接替换数据就可以用
    RNN预测模型做多输入单输出预测模型,直接替换数据就可以用。程序语言是matlab,需求最低版本为2021及以上。程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据......