当前位置: 首页 > news >正文

C# Unity 面向对象补全计划 七大原则 之 里氏替换(LSP) 难度:☆☆☆ 总结:子类可以当父类用,牛马是马,骡马也是马

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正
本系列作为七大原则和设计模式的进阶知识,看不懂没关系

请看专栏:http://t.csdnimg.cn/mIitr,尤其是关于继承的两篇文章,本知识点与其密切相关

1.里氏替换原则(LSP)

里氏替换原则(Liskov Substitution Principle,LSP)是面向对象编程中的一个重要设计原则,它由芭芭拉·利斯科夫(Barbara Liskov)在1987年提出,这个原则的核心思想是:子类对象可以替换父类对象,而不会影响程序的正确性

说白了,就是子类可以当父类用,只要涉及到继承的类就都可以用里氏替换原则


2.举栗子

继承下的里氏替换

子类必须完全实现父类的方法,说到完全实现,是不是就联想到了抽象类?故以此为例

我有一个抽象父类Computer,有两个抽象方法,子类去要去实现

Computer noteBook = new NoteBook();
noteBook.SayName();
noteBook.OutName();public abstract class Computer{protected Computer() { }//抽象方法public abstract void SayName();public abstract void OutName();
}public class NoteBook : Computer {//1.子类必须完全实现父类的方法public override void OutName() {Console.WriteLine("5800x");}public override void SayName() {Console.WriteLine("5800x");}//2.子类可以有自己特有的方法public void SayMyName() {Console.WriteLine("笔记本");}//3.父类的行为在子类中仍然有效,下面这部分方法会抛出异常,所以违反了父对象的行为,视为无效//public override void SayName() {//    throw new NotImplementedException();//}
}

Q:这和继承不是没有区别吗?

A:其实,因为子类可以完全继承父类的这一特点,所以几乎看不出来区别

But!!!!!!!!!!!!!!!!!!!!注意这一行代码:

我用父类的类new了一个子类的对象出来,还能正常用,这就是里氏替换

3.优点

http://www.lryc.cn/news/415603.html

相关文章:

  • PXE批量安装操作系统
  • float32转float16、snorm/sunorm8/16 学习及实现
  • 小型养猫空气净化器怎么选?小型养猫空气净化器产品评测
  • 数学建模--二分法
  • 如何使用 Puppeteer 绕过 Akamai
  • 【硬件知识】车规级开发等级——AEQ-100和ISO26262标准
  • Qt | QStackedBarSeries(堆叠条形图)+QPercentBarSeries(堆叠百分比条形图)
  • C++——多态经典案例(一)组装电脑
  • 从传统监控到智能化升级:EasyCVR视频汇聚平台的一站式解决方案
  • Windows下,已知程序PID,取得其窗口句柄HWND
  • Java获取exe文件详细信息:产品名称,产品版本等
  • ORB-SLAM2运行环境搭建
  • Nginx高频核心面试题2
  • 全面提升PDF编辑效率,2024年五大顶级PDF编辑器推荐!
  • 代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
  • 视频美颜SDK与直播美颜插件在实时视频中的应用
  • 【Linux】yum(工具篇)
  • 3GPP入门
  • FFmpeg内存对齐简述
  • 手机号码归属地查询接口如何对接?(一)
  • DDei在线设计器-加载数据
  • NetLLM: Adapting Large Language Models for Networking.
  • 基于Yolov8面部七种表情检测与识别C++模型部署
  • 未确认融资费用含义及会计处理流程
  • Linux配置go程序为service后台开机自启动
  • 汇舟问卷:完成16份调查,挣了40美金,换算后美滋滋
  • Nacos 202407月RCE漏洞(0day)与复现
  • Dynamo修改共享参数绑定的分组——群问题整理005
  • 聚焦汽车软件开发与测试:静态代码扫描、单元测试与集成测试等方面的实践应用
  • 「队列」实现FIFO队列(先进先出队列|queue)的功能 / 手撕数据结构(C++)