首页 > 编程语言 >C# & Unity 面向对象补全计划 七大原则 之 里氏替换

C# & Unity 面向对象补全计划 七大原则 之 里氏替换

时间:2024-08-04 13:52:51浏览次数:16  
标签:补全 C# 子类 void Unity Computer 里氏 父类 public

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

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

1.里氏替换原则

里氏替换原则(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了一个子类的对象出来,还能正常用,这就是里氏替换

标签:补全,C#,子类,void,Unity,Computer,里氏,父类,public
From: https://blog.csdn.net/2301_77947509/article/details/140905096

相关文章

  • Angular项目如何使用拦截器 httpClient 请求响应处理
    在Angular中,拦截器(Interceptor)是一种用于拦截和处理HTTP请求或响应的机制。HttpClient模块提供了一种方便的方式来创建拦截器,以便在发送请求或接收响应之前或之后执行一些操作。以下是如何在Angular项目中使用HttpClient拦截器的基本步骤:创建拦截器类:首先,你需要创建一个继承自H......
  • Codeforces Round 891 (Div. 3)
    比赛链接完成度:4/7这场比赛相对于上次那场909div3,题目描述清楚许多(可能是出简单了)。首先是B题,一道模拟四舍五入的题目题目B这题就是简单模拟,我们需要读入一个数字字符串,把他输入到一个数组当中,然后从低位到高位找大于等于5的数,如果找到了,那么之前的数包括这个数都变成0,下一......
  • 24华数杯ABC题助攻资料!!!!
    2024年第五届“华数杯”全国大学生数学建模竞赛比赛开始之后将在内更新参考论文+可执行代码竞赛信息一、比赛背景为了培养学生的创新意识及运用数学方法和计算机技术解决实际问题的能力,天津市未来与预测科学研究会、中国未来研究会大数据与数学模型专业委员会(协办)决定举办华......
  • 小鸟影视苹果cms整站源码带采集规则+支付接口+搭建教程
    小鸟影视苹果cms整站源码带采集规则+支付接口+搭建教程###小鸟影视苹果CMS整站源码带采集规则+支付接口+搭建教程在数字化时代,视频内容的需求日益增长,搭建一个功能齐全的视频网站成为了许多创业者的选择。小鸟影视苹果CMS整站源码是一个集成了采集规则和支付接口的解决方案,......
  • OceanBase介绍
    OceanBase是什么OceanBase是由蚂蚁金服、阿里巴巴完全自主研发的分布式关系型数据库,始创于2010年。OceanBase具有数据强一致、高可用、高性能、在线扩展、高度兼容SQL标准和主流关系型数据库、低成本等特点。OceanBase至今已成功应用于支付宝全部核心业务:交易、支......
  • DLMS/COSEM中的信息安全:加密算法(中)1
    3.3高级加密标准    为了DLMS/COSEM的目的,应使用FIPSPUB197:2001中规定的高级加密标准(AES)。AES在加密或解密操作期间对数据块(块)进行操作。因此,AES被称为分组密码算法。    AES使用128、192或256位密钥以128位数据块加密和解密数据。三个密钥大小是足够的。......
  • cartographer之MapBuilder类
    node_main.cc node_main.cc--->node.cc--->map_builder_bridge.cc--->map_builder.ccnode_main.cc:cartographer_ros/cartographer_ros/cartographer_ros/node_main.cc//MapBuilder类是完整的SLAM算法类,包含前端(TransformingTrajectoryBuilder,scantosubmap)、后端(用于......
  • 深入理解select for update的含义和锁机制
    见博客:1、深入理解selectforupdate的含义和锁机制 2、selectforupdate锁的是行还是表?如果查询条件字段的不同,主键,索引,普通字段,那么锁的是行还是表,是不同的select...forupdate锁详解 3、select……forupdate到底是加了行锁,还是表锁?参考博客:https://baijiahao.baidu......
  • 买二手NVIDIA网卡被坑记录:某宝的咸鱼二手交易网站上购入NVIDIA Mellanox ConnectX-3
    原本是打算去大连的人工智能计算中心去做技术负责人的,不过考虑到工作性质再考虑到自己的一些现实情况也就放弃了这个职位(比较在大连理工大学的博士学位还没有读下来,还是有所牵挂的)。同时,由于自己已经退出了大连理工的相关实验室以及华为集团和大连化物所的相关工作,因此我也就没有......
  • 【C++核心篇】—— C++面向对象编程:封装相关语法使用和注意事项详解(全网最详细!!!)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、封装(类)1.封装的使用(类和对象)2.对象的初始化和清理2.1构造函数2.2析构函数2.3构造函数的分类及调用3.深拷贝与浅拷贝4.C++对象模型和this指针5.友元6.运算符重载前言在本篇......