我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#里氏替换原则怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#里氏替换原则怎么实现

本文小编为大家详细介绍“C#里氏替换原则怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#里氏替换原则怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

里氏替换原则(LSP)

定义:在任何父类出现的地方都可以用它的子类类替换,且不影响功能。
解释说明:
其实LSP是对开闭原则的一个扩展,在OO思想中,我们知道对象是由一系列的状态和行为组成的,里氏替换原则说的就是在一个继承体系中,对象应该具有共同的外在特性,使用LSP时,如果想让我们的程序达到一个父类出现的地方都可以用它的子类来替换且不影响功能,那么这个父类也应该尽量声明出子类所需要的一些公共的方法,父类被子类替换之后,会比较顺利,那么为什么说它是对开闭原则的一个扩展呢?因为我们在开闭原则中说尽量使用接口和抽象类,当然这个抽象类和接口也应该尽量定义得完整,这样我们这个接口和抽象类会比较稳定,这样既符合了开闭原则也满足了里氏替换原则。

错误案例1:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 里氏替换原则{    /// <summary>    /// 鸟类    /// </summary>    public class Bird    {        /// <summary>        /// 吃的方法        /// </summary>        public void Eat()        { }        /// <summary>        /// 飞的方法        /// </summary>        public void Fly()        { }    }    /// <summary>    /// 定义一个企鹅类继承鸟类    /// </summary>    public class Penguin : Bird    {    }    public class Test    {        public static void ShowFly(Bird bird)        {            bird.Fly();        }        public static void Main()        {            ShowFly(new Penguin());        }    }}

解释说明:

在上面的代码中,定义了一个鸟类,企鹅类继承自鸟类。鸟类里面有飞的方法,而企鹅不会飞,所以上面的代码违反了里氏替换原则。

错误案例2:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 里氏替换原则{    /// <summary>    /// 定义一个父类宠物类    /// </summary>    public  class Pet    {    }    /// <summary>    /// 定义一个企鹅类继承自宠物类    /// </summary>    public class PenguinDemo : Pet    {        /// <summary>        /// 游泳的方法        /// </summary>        public void Swiming()        {            Console.WriteLine("可爱企鹅在游泳");        }    }    /// <summary>    /// 定义一个海豚类继承自宠物类    /// </summary>    public class Dolphin : Pet    {        /// <summary>        /// 玩游戏的方法        /// </summary>        public void PlayGame()        {            Console.WriteLine("神奇泡泡打砖块");        }    }    /// <summary>    /// 测试类    /// </summary>    public class Test    {        public static void ShowPlay(Pet pet)        {            if (pet is PenguinDemo)            {                //类型转换                PenguinDemo pen = (PenguinDemo)pet;                pen.Swiming();            }            if (pet is Dolphin)            {                //类型转换                Dolphin dol = (Dolphin)pet;                dol.PlayGame();            }        }    }}

解释说明:

如果把河豚、企鹅当做宠物,我们可以定义一个宠物类,然后,让这些宠物继承这个类,我们知道每种宠物我们跟他玩耍的方式是不一样的。比如。企鹅有游泳的方法,河豚有游戏的方法,根据这个需求,我们设计一个系统,编写一个宠物类,让企鹅继承这个宠物类,在企鹅类里创建一个游泳的方法,这个方法不能放到宠物类里面,因为并不是所有宠物都会游泳。编写河豚类时,同样让他继承宠物类,在河豚类里面编写一个游戏的方法,这个时候客户端程序在使用宠物类和它的子类的时候,就需要做判断,具体是哪个子类,我们通过宠物类是无法调用具体的方法,要做一个判断和转型,如果在加一个狗类,狗类也会有一个独立的方法,要修改之前的代码(使用宠物类和它的子类的时候,要增加判断是狗类),这很明显不符合开闭原则,也不可能符合里氏替换原则,因为这里面的任何一个宠物都无法替换他的父类,因为他们的行为是不一样的,代码的可维护性和重用性很差!

读到这里,这篇“C#里氏替换原则怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#里氏替换原则怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#里氏替换原则怎么实现

本文小编为大家详细介绍“C#里氏替换原则怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#里氏替换原则怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。里氏替换原则(LSP)定义:在任何父类出现的地
2023-06-29

php中里氏替换原则实例分析

这篇文章主要介绍“php中里氏替换原则实例分析”,在日常操作中,相信很多人在php中里氏替换原则实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中里氏替换原则实例分析”的疑惑有所帮助!接下来,请跟
2023-06-29

C#面向对象编程中的里氏替换原则是什么

这篇文章主要介绍“C#面向对象编程中的里氏替换原则是什么”,在日常操作中,相信很多人在C#面向对象编程中的里氏替换原则是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#面向对象编程中的里氏替换原则是什么
2023-07-02

php中里氏替换原则的思想是什么

在PHP中,里氏替换原则是对类继承的一种约束,该原则的主要思想是不能随便去继承不合适的、有多余方法或者属性的类,子类可以扩展父类的功能,但不能改变父类原有的功能。
2018-02-27

C++依赖倒转原则和里氏代换原则有什么好处

设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。本篇介绍设计模式七大原则之一的依赖倒转原则
2023-02-25

C++依赖倒转原则和里氏代换原则的作用是什么

这篇“C++依赖倒转原则和里氏代换原则的作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++依赖倒转原则和里氏代换
2023-07-05

Java设计模式的里氏置换原则是什么

这篇文章主要讲解了“Java设计模式的里氏置换原则是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java设计模式的里氏置换原则是什么”吧!里氏置换原则(Liskov Substitut
2023-06-17

php正则怎么实现替换alt

php正则实现替换alt的方法:1、创建一个PHP示例文件;2、获取需要替换的内容;3、通过“<img.*?src=[\"|\'](.*?)[\"|\'].*?>”正则实现替换即可。
2021-11-16

php正则怎么实现替换电话

php正则实现替换电话的方法:1、创建一个PHP示例文件;2、通过“preg_replace($pattern, $replacement,$str);”替换电话中间四位数字即可。
2020-01-07

php怎么实现华氏温度转换摄氏温度

php实现华氏温度转换摄氏温度的方法:1、创建一个PHP示例文件;2、通过摄氏温度与华氏温度的换算式“C = 5×(F- 32)/9”来实现转换即可。
2018-10-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录