博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
里氏替换原则
阅读量:5082 次
发布时间:2019-06-13

本文共 599 字,大约阅读时间需要 1 分钟。

通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不想要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。

1.子类必须完全实现父类的方法

我们在做系统设计时,经常会定义一个接口或抽象类,然后编码实现,调用类则直接传入接口或抽象类,其实这里已经使用了里氏替换原则。

继承接口要实现所有方法,继承抽象类实现所有抽象方法。

2.子类可以有自己的个性

3.覆盖或实现父类方法时输入参数可以被放大

Override  覆写 覆盖父类的方法

Overload  重载  方法名相同但参数不同

当子类Overload重载方法参数范围小于父类方法的参数时,当子类代替父类时,很可能会在子类没有覆写父类方法的前提下,子类方法被执行了,这样会引起业务逻辑混乱。

子类中方法的前置条件必须与超类中杯覆写的方法的前置条件相同或者更宽松。

4.覆写或实现父类的方法时输出结果(范围)可以被缩小

 

采用里氏替换原则时,尽量避免子类的“个性”,一旦子类有个性,这个子类和父类之间的关系就很难调和了,把子类当做父类使用,子类的个性被抹杀了,把子类单独作为一个业务来使用,则会让代码间的耦合关系变得扑朔迷离,缺乏类的替换的标准。

 

转载于:https://www.cnblogs.com/errr/archive/2012/04/23/2457355.html

你可能感兴趣的文章
mysql8.0.13下载与安装图文教程
查看>>
站立会议08(冲刺2)
查看>>
url查询参数解析
查看>>
http://coolshell.cn/articles/10910.html
查看>>
[转]jsbsim基础概念
查看>>
DIV和SPAN的区别
查看>>
第一次使用cnblogs
查看>>
C#语法糖之 session操作类 asp.net
查看>>
2015 Multi-University Training Contest 3
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>
<s:iterator>的status
查看>>
C++入门--1.0输入输出
查看>>
让搭建在Github Pages上的Hexo博客可以被Google搜索到
查看>>
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段...
查看>>
在WPF控件上添加Windows窗口式调整大小行为
查看>>