什么是里氏替换原则_J*a OOP设计行为规范说明


里氏替换原则要求子类对象能安全替换父类对象且行为不变;核心是子类不得破坏父类契约,需满足前置条件不增强、后置条件不削弱、不变量守恒等准则。

什么是里氏替换原则_java oop设计行为规范说明

里氏替换原则(Liskov Substitution Principle,简称 LSP)是 J*a 面向对象设计中六大核心原则之一,它的核心就一句话:子类对象必须能够替换父类对象,且程序行为不发生改变。换句话说,只要代码里用到了父类类型的地方,换成它的任意合法子类实例,运行结果应该完全一致、不出错、不反逻辑。

它解决什么问题

继承不是“能编译通过”就万事大吉。现实中常出现:父类方法语义清晰(比如 setHeight() 只改高不碰宽),子类一重写却悄悄联动修改了宽——外部调用者按父类契约使用,结果出 bug。LSP 就是给继承划一条底线:子类不能偷偷破坏父类已承诺的行为规则。

常见违反场景包括:

  • 子类重写父类非抽象方法时,改变了原逻辑(如把“计算原价”改成“返回折扣价”)
  • 子类覆盖父类方法后,对入参做了更严格的校验(父类允许 null,子类拒绝 null)
  • 子类重写后返回类型变宽松(父类返回 ArrayList,子类返回 List 看似合理,但若调用方用了 ArrayList 特有方法就会崩)
  • 用正方形继承矩形:父类有 setWidth()setHeight(),子类重写后两个方法都强制同步边长——这违背了矩形“宽高可独立设置”的隐含契约

怎么才算合规

关键不是“能不能继承”,而是“替换了是否还稳得住”。判断依据很实在:

西语写作助手 西语写作助手

西语助手旗下的AI智能写作平台,支持西语语法纠错润色、论文批改写作

西语写作助手 21 查看详情 西语写作助手
  • 前置条件不增强:子类方法的输入约束不能比父类更严(比如父类接受任意正整数,子类不能只接受 1~100)
  • 后置条件不削弱:子类方法的输出结果、异常范围、副作用等,不能比父类承诺得更少或更松(比如父类保证返回非 null,子类就不能返回 null)
  • 不变量要守住:父类定义的业务不变量(如“余额不能为负”“ID 一旦设置不可变”),子类必须同样维护
  • 不要覆盖已有实现:对已有具体方法,优先新增方法(如 getDiscountPrice()),而不是重写 getPrice() 改含义

实际开发中的提醒

LSP 不是理论清规戒律,而是帮你提前避坑的实践指南:

  • 写父类时,把方法契约写清楚(J*aDoc 注明参数范围、返回含义、可能异常)
  • 写子类前,先问一句:“如果现在所有父类变量都换成我这个子类,现有测试还全过吗?”
  • 发现子类很难“干净”继承时,别硬扛——考虑用组合(has-a)代替继承(is-a),比如让“正方形”持有“边长”字段,而不是继承“矩形”
  • 单元测试里,可以用子类实例直接替换父类参数做回归验证,这是检验 LSP 最直接的方式

基本上就这些。它不复杂,但容易忽略;守住了,继承才真正成为助力,而不是埋雷工具。

以上就是什么是里氏替换原则_J*a OOP设计行为规范说明的详细内容,更多请关注其它相关文章!


# 这是  # 网站推广客服怎么做好  # seo工程师新思路  # 产品seo标题设置方法  # 西安seo优化关键词  # 网络学习网站建设  # 工体自适应网站建设  # 厦门自助网站建设平台  # 通州区营销网站优化系统  # seo中文名字大全  # 梓豪刷赞网站推广全网免费qq  # 清规戒律  # java  # 运算符  # 守住  # 而不是  # 已有  # 面向对象  # 行为规范  # 重写  # 子类  # lsp  # 工具 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 如何在CSS中设置背景图像:一个全面指南  汽车之家网页版免费登录_汽车之家官网首页直接进入  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  word文档中的分隔符有哪些不同类型和用途_Word分隔符类型与用途方法  《理想汽车》权限管理设置方法  《饿了么》拼好饭点外卖教程2025  盲鳗善于分泌黏液猜猜主要用来做什么  b站怎么用微信登录_b站微信登录方法  《蓝色星原:旅谣》坐骑获取攻略  Linux如何开发轻量级数据服务模块_Linux服务化设计  鸿蒙单条备忘录如何加密  解决Pandas DataFrame高度碎片化警告:高效创建多列的策略  《土豆雅思》修改密码方法  iPhone12是否要更新ios16  《搜书吧》阅读书籍方法  《一起考教师》账号注销方法  附近酒吧怎么找?  人教版电子教材在线获取指南  深入理解J*aScript异步操作:setTimeout与调用栈的真相  《kimi智能助手》制作ppt教程  Animex动漫社社登录官网 Animex动漫社资源社入口直达  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  c++如何掌握指针的核心用法_c++指针入门到精通指南  海棠阅读网页版_进入海棠网页版在线阅读中心  解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用  电子白板帮助菜单使用指南  2025考研成绩查询时间入口分享  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  汽水音乐在线入口 汽水音乐网页端官方页面快速打开  B站怎么开|直播| B站|直播|申请需要什么条件【新手必看】  《虎扑》取消评分记录方法  全球各国上班时间表外贸邮件时间  英雄联盟争者留名活动介绍  网易云音乐闹钟铃声设置教程  CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条  《万兴喵影》导出视频方法  J*aScript二进制处理_ArrayBuffer与Blob  《全民k歌》音乐怎么下载到本地2025  铁路12306官网入口 铁路12306中国铁路官网登录首页  《百果园》充值余额方法  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  Linux如何优化系统启动流程_Linux启动项优化方案  解决SQLAlchemy模型跨文件关联的Linter兼容性指南  《宝可梦大集结》S4冠军之路开始时间介绍  PHP动态导航按钮:根据用户登录状态切换链接与文本  圆通快递官网入口查询单号 手机版官方查询入口  芒果TV官网登录入口 芒果TV官方网站登录入口  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  优酷下载视频的清晰度怎么选_优酷缓存清晰度设置与选择指南 

 2025-12-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.