`

C#中的里氏替换原则

    博客分类:
  • C#
c# 
阅读更多
里氏转换原则
子类可以赋值给父类对象
父类对象可以强制转化为对应的子类对象


里氏替换原则直观理解就是"子类是父类",反过来就说不通了.
就像男人是人对的,但人是男人就不对了.
这样明白了吧.


在面向对象思想中可知,派生类拥有基类向下公开的所有特征,它是基类的一个特例。
当派生类对象赋于基类类型时,将出现以下情况:派生类的数据结构依次对应于基类的数据结构。而派生类拥有的自己的数据将不可见。

当基类的对象试图转换为派生类型时,将出现基类对象的数据无法依次填充完派生类的所有数据结构。这就造成了它将无法完成派生类定义的功能。编译器将会提示甚至报错。
这就是派生类能胜任基类功能,而基类却无法完全胜任派生类功能的原因。
强制转换属于 基类到派生的过程:那是因为 设计人员知道:该基类对象的数据结构完全可以填充完派生类的结构。否则,将出现强转错误。一般最好避免使用强转!

还有,子类能够出现在任何父类对象出现的地方不是完全正确的,父类有时也不会将自己的一些成员公开给子类。
C#示例代码:http://www.eyesourcecode.com/f/CSharp/1
分享到:
评论

相关推荐

    24种设计模式C#版

    2、里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规则.(子类可替换父类) 3、依赖倒转原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该...

    设计模式之六大原则详解,Markdown笔记

    详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。

    浅谈C#六大设计原则

    这六种原则分别为单一职责原则、接口隔离原则、里氏替换原则、迪米特法则、依赖倒置原则、开闭原则。 单一职责原则 单一职责原则(SRP:Single responsibility principle),规定一个类中应该只有一个原因引起类的...

    C# 基础学习案例源码-2023(32套源码案例)适合初学者学习使用

    C# 基础学习案例源码(32套源码案例) CS_01你好世界 CS_02输入和输出 CS_03异常捕获 CS_04字符串拼装 CS_05枚举 CS_06数组 CS_07二维数组 CS_08交错数组 CS_09值类型和引用类型 ...CS核心_13_继承_里氏替换原则

    设计模式所有实验及实验报告及代码.zip

    5里氏替换原则 6依赖倒置原则 7单一职责原则 8接口隔离原则 9迪米特法则 10合成复用原则 11创建型模式的特点和分类 12单例模式 13原型模式 14工厂方法模式 15抽象工厂模式 16建造者模式 17结构型模式概述 18代理模式...

    C#面向对象设计的七大原则

    本文我们要谈的七大原则,即:单一职责,里氏替换,迪米特法则,依赖倒转,接口隔离,合成/聚合原则,开放-封闭 。 1. 开闭原则(Open-Closed Principle, OCP) 定义:软件实体应当对扩展开放,对修改关闭。这句话说...

    无废话C#23种设计模式

    l 里氏替换:如果你买的DX9显卡不支持DX9特性,那么这个显卡一定没法用。如果父类的方法在子类中没有实现那就晕了。在程序的世界中千万别认为鸟都会飞,先考虑清楚将会有哪些鸟吧。 l 依赖倒置:针对接口编程,这样...

    常见的几种设计模式

    单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则 说明:资料都是网上看的,只是稍微整理下成文档加代码方便理解 原文出处:http://blog.csdn.net/u012169685/article/details/46331171

    c#学习方法

    4. 深入学习对象类型:里氏替换原则(LSP)、类的属性极其本质特性、IS ,AS 关键字、深入学习字符串理论、枚举类型以及适用场合。5. 深入学习集合特性:索引器、自定义集合、深入刨析集合类型本质(ArrayList、...

    深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

    用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单一职责SRP) The Open/Closed Principle(开闭原则OCP) The Liskov Substitution Principle(里氏替换原则LSP) ...

    程序员考试刷题-c-sharp-interview-q-and-a:C#问题和答案

    里氏替换原则 它指出派生类型必须可以替代它们的基类型 接口隔离原则 它指出永远不应该强迫客户实现他不使用的接口 依赖倒置原理 它指出实体必须依赖于抽象而不是具体。 这意味着高级模块不能依赖于低级模块,但它们...

    快速学习C# 设计模式之职责链模式

    该模式最简单的实现方式就是运用里氏替换原则,对每个职责所持有的对象进行抽象,并使得每个职责对象都拥有共同的父类,通过对外提供出具有一般意义的接口。 范例 该范例,是我在对微服务中,服务发现的容错性进行...

    浅析C# 装箱和拆箱

    那样的话,像整形这样的结构按理说其实也是间接继承自Object的,那么按照里氏替换原则,整形转换成object应该没有问题吧。 像上面的代码,这个b还是值类型吗?如果是值类型,好像又和直接继承Object都是引用类型...

    ASP.NET设计模式-杨明军译(源码)

    5.3.3 里氏替换原则 5.4 小结 第6章 服务层 6.1 服务层介绍 6.1.1 SOA 6.1.2 SOA的4项信条 6.1.3 Facade设计模式 6.2 应用Messaging模式 6.2.1 Document Message和 Request-Response模式 6.2.2 ...

Global site tag (gtag.js) - Google Analytics