每天一学设计模式(三、里氏替换原则)

引言


本文参考以下这篇文章

[(2条消息) java设计模式3,里氏替换原则哪 吒的博客-CSDN博客java里氏替换原则](https://blog.csdn.net/guorui_java/article/details/125958335)

定义


子类可以扩展父类的功能,但不能改变父类原有的功能,也就是说,在子类继承父类时,除添加新的方法且完成新增功能外,尽量不要重写父类的方法。

代码


packagecom.guor.principle;
​
publicabstractclassHero {
​
    // 编号
    privateStringid;
    // 姓名
    privateStringname;
    // 武力值
    privateIntegerforceValue;
​
    /**
     * 名号
     */
    publicvoidnickName(){
        System.out.println("英雄名号");
    }
​
    /**
     * 师傅
     */
    publicvoidmaster(){
        System.out.println("师傅");
    }
​
    /**
     * 混元珠
     */
    publicvoidMixedYuanzhu(){
        System.out.println("混元珠");
    }
}
​
//=============================哪吒=============================
publicclassNezhaextendsHero {
    // balabala
}
​
//=============================敖丙=============================
publicclassAobingextendsHero {
    // makabaka
}​

个人总结


继承关系的使用是要建立在不破坏父类的基础之上的;

如果A extends B,但是A中的很多方法以及实现都和B不相同(如:给B中添加方法funcB,A本身并不需要),这时候使用继承就会强制将funcB和A绑定起来,增大了耦合度;

此时应该将一致性拆分出来,继承抽象类,从而在改动B时并不会给A带来影响。

里氏替换原则在一定程序上仍然是在继承和抽象之间的一种平衡和取舍。

2023.2.8 补充

面向对象的三大基本特征,五大基本原则 - 风之之 - 博客园 (cnblogs.com)

今天又刷到这篇文章,里面对里氏替换原则的定义是这样的:

在对象 x 为类型 T 时 q(x) 成立,那么当 S 是 T 的子类时,对象 y 为类型 S 时 q(y) 也应成立。(即对父类的调用同样适用于子类)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值