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

news2024/11/13 9:52:20

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

请看专栏: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.coloradmin.cn/o/1983228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相机无须标定,使用基础矩阵F实现多相机内参自标定

Abstract 从给定的基本矩阵中进行两个摄像头的自我校准问题是几何计算机视觉中的基本问题之一。在已知主点和正方形像素的假设下,Bougnoux公式提供了一种计算两个未知焦距的方法。然而,在许多实际情况下,由于常见的奇异性,公式会…

xshell无法连接Ubuntu20.4

在之前红帽版本里,直接下了就可以用xshell直接连接,但是Ubuntu20.4不能直接连接,我开始以为是密码错了,但是我想了想vscode连接不需要密码,一样连接不上,我就在网上找了很多方法,最后终于连接上…

总线学习4--UART

想来串口通信是我第一次接触嵌入式就知道的,一直调试也是用串口线,但是里面的原理还真不清楚。这次难得把环境弄出来了,就顺便学学。 一 环境搭建 还是老规矩,废话不多说,干就完事。 这次用的树莓派zero小板&#x…

云计算实训19——上线一个静态的前端系统(续)

上线一个静态的前端系统(续) 准备工作 在eleme服务器上: 启动服务 启动rpcbind [rooteleme-static ~]# systemctl restart rpcbind 启动nfs [rooteleme-static ~]# systemctl restart nfs 在static-server主机上: 1.重启服务 启动smb [rootstatic…

重塑汽车制造未来:3D插图技术大师,零误差高效驱动新时代

在当今快速革新的汽车制造领域,高效、精准的产品设计与制造流程已成为众多车企破浪前行的核心引擎。但随着市场竞争的日益激烈,在产品设计与制造中,传统二维CAD设计的局限性越发明显——设计周期长、沟通成本高、错误频发及资源利用低效等问题…

AI算力租赁是什么,哪些行业会有需求?

一、AI算力租赁的定义与概述 AI算力租赁是指基于人工智能(AI)应用需求,将所需的计算能力(即算力)通过租赁服务的方式提供给企业和个人用户。这种服务允许用户根据需要租用人工智能计算资源,如图形处理单元…

[网鼎杯2018]Unfinish解题,五分钟带你解题

目录 前期准备 ​编辑 扫描目录 寻找注入点 构建payload: 开始注入: 寻找过滤规则 绕过过滤 构建python脚本 提交flag 总结 前期准备 这道题是2018年网鼎杯的一道题,是比较经典的一道sql二次注入的题,我们一起来看一下 …

B1.3 程序状态寄存器PSTATE的介绍

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】个人博客笔记导读目录(全部) B1.3 进程状态,PSTATE* 程序状态寄存器或PSTATE,是程序状态信息的抽象。所有指令集都提供操作 PSTATE 元素的指令。 以下 PSTATE 信…

第二十一天内容

上午 4、mysql基础命令 5、mysql操作命令 ------------------------------------------------------------------------------------------------------------------------------- 下午 1、脚本安装mysql 2、mysql命令回顾 3、mysql用户权限设置 4、命令练习 6、权限角色 7、…

按xls标签替换docx及xls内容

WPSoffice环境下,需要批量替换doc文档及xls表格某些内容,在windows下,可以用VBA宏实现,先建一个标签表格,然后按标签批量替换。但在Linux下,WPS表格宏不能跨文档操作WPS文字,于是想用python实现…

工程架构简析

文内项目 Github:XIAOJUSURVEY 架构 架构的设计最终是为了场景可以快速扩展,基于工程底座,使用者能够专注于业务领域的深入。 B端:面向问卷管理者,专注于问卷管理、问卷投放和数据分析三大核心能力的建设。&#xff0…

vue3实现商品图片放大镜效果(芋道源码yudao-cloud 二开笔记)

今天开发一个防某商城的商品图片放大镜,鼠标移动到图片位置时,右侧出现一个已放大的图片效果。 示例如下: 下图的图片的放大效果和小图的切换封装成了组件PicShow.vue,可根据需求自行修改,如下: 第一步&…

鸿蒙应用服务开发【钱包服务(ArkTS)】

介绍 基于Stage模型,提供钱包交通卡和Pass卡的开卡、预览卡、查询卡信息、更新卡片信息、删除卡片、初始化钱包环境等功能。 效果预览 具体实现 交通卡 在hms.core.payment.walletTransitCard中定义了钱包交通卡接口API,示例接口如下: /*…

【漏洞复现】用友NC Cloud系统queryPsnInfo接口SQL注入

文章目录 0x00 漏洞描述影响范围 0x01 测绘工具0x02 漏洞复现0x03 Nuclei检测脚本0x04 修复建议0x05 免责声明 0x00 漏洞描述 用友NC Cloud存是一款大型企业数字化平台。 在受影响的版本中,攻击者可以通过未授权访问 /ncchr/pm/obj/queryPsnInfo 接口,利…

综合安防管理平台LntonCVS视频监控汇聚平台视频数据智能化与资源共享方案

随着全球城市化进程的加快,智慧城市概念日益受到重视。在这一趋势下,LntonCVS视频汇聚平台作为新型智慧城市的重要智能基础设施之一,扮演着关键角色。该平台整合、接入和管理城市中各类视频资源,涵盖公共安全视频、交通监控、城市…

【五大海内外高校支持】2024年数字经济与计算机科学国际学术会议(DECS2024)

大会官网:www.icdecs.net 大会时间:2024年9月20-22日 大会地点:中国-厦门 截稿日期:详情见官网 支持单位 马来西亚理工大学 北京科技大学经济管理学院 南京信息工程大学 马来西亚敦胡先翁大学 大会嘉宾 大会主席 罗航…

opencascade AIS_ViewController源码学习 视图控制、包含鼠标事件等

opencascade AIS_ViewController 前言 用于在GUI和渲染线程之间处理视图器事件的辅助结构。 该类实现了以下功能: 缓存存储用户输入状态(鼠标、触摸和键盘)。 将鼠标/多点触控输入映射到视图相机操作(平移、旋转、缩放&#xff0…

Mybatis(Day 18)

数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。ORM(Object Re…

系统运维——PXE自动安装系统

摘要 PXE(Preboot Execution Environment,预启动执行环境)是一种允许计算机通过网络启动操作系统而无需本地存储设备的技术。本文详细介绍了 PXE 的定义、架构、原理、应用场景及常见命令体系。以 RedHat7 为例,展示如何配置和使…

Tooltip 文字提示

在偶然维护前端开发时,遇到页面列表中某个字段内容太长,且该字段使用了组件显示,导致不能使用纯文本得那个省略号代替显示得css样式效果,如下 所以只能另辟溪路了, 1、最开始想到是使用横向滚动得效果来实现&#xff…