oop设计原则-里氏替换原则

本文介绍了李氏替换原则,强调了在继承体系中正确重写父类方法的重要性,避免因类型转换导致逻辑错误。通过哺乳动物类及其子类的具体例子说明如何在不影响多态的情况下实现精确的描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    李氏替换原则是以提出者命名的,是指对父类对象的引用在替换成子类的时候也可以保证编译和逻辑不出现异常。

    在日常开发中,我们经常会对父类的方法进行重写,从而可能导致没有遵循李氏替换原则,这样有一个坏处,在他人调用此被重写的方法时,子类被当做父类使用,而编译不会报错,但是得不到应有的返回值,使代码出问题的几率大大增加。

    但子类就是为了对父类进行更精确的描述和拓展而存在,所以在李氏替换原则下,子类在对父类进行修改的同时要尽可能不重写父类,即使进行重写,需要保证入参和返回值的精确性。没有对父类方法进行重写的时候很好理解。那么举一个重写父类方法的例子

   例如

    父类:哺乳动物类,

      {

           getLegs(){

           return 四条腿; 

        }

      }

    子类:马

     {

           getLegs(){

           return 四条马腿; 

        }

      }

    子类:牛

    {

           getLegs(){

           return 四条牛腿; 

        }

      }

    子类:人

    {

           getLegs(){

           return 四肢; 

        }

      }

这样既对子类进行了更精确的描述,也保证了李氏替换原则的成立。或者在重写父类方法时,先调用一下父类的方法。

所以很多人对多态和李氏替换原则是否相悖持疑问的时候就得到了很好的解答。

在学习的同时写下了这篇博客,理解可能不够透彻甚至有错误,希望得到大家的指正,包括技术方面和写作方面,感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值