我是靠谱客的博主 俏皮夕阳,最近开发中收集的这篇文章主要介绍面向对象设计原则之里氏代换原则,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

里氏代换原则 Liskov Substitution Principle由Barbara Liskov提出,缩写为LSP

面向对象设计原则的第一条开闭原则的实现是通过抽象化,然后提供不同的实现,具体的使用就是使用继承关系。而里氏代换原则是继承复用的基石

定义

假设有类型T1及其对象O1以及类型T2及其对象O2,在程序中T1定义的所有对象O1都替换成O2时,程序的行为不会发生任何变化,那么可以认为T2是T1的子类

也就是说软件中使用的是基类的话,那么也适用于子类,且软件功能不会受影响

比如一个方法接收的是一个父类,那么该方法必然可以接收该父类的任何子类

注意

里氏代换原则说的是子类代换父类,反过来父类代换子类并不成立

比如一个方法接收的是子类类型,那么该方法并不能接收该子类的父类型

关于访问权限的降权

我们都知道Java中如果子类重写父类的方法,不能降低方法的访问权限,但是是为什么呢?

假设父类中定义了个方法访问权限为public的方法f1,而子类将该方法的访问权限降权为private。在程序中原来有很多地方调用父类的f1方法,当将程序中所有使用父类的地方都替换成子类的对象时,会发现程序编译不通过了,因为原来使用f1的地方访问不了f1了。而里氏代换原则要求的是替换后不影响原有程序功能,所以方法访问权限的降权是违反里氏代换原则的

最后

以上就是俏皮夕阳为你收集整理的面向对象设计原则之里氏代换原则的全部内容,希望文章能够帮你解决面向对象设计原则之里氏代换原则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(25)

评论列表共有 0 条评论

立即
投稿
返回
顶部