当前位置: 首页 > wzjs >正文

汉狮做网站公司郑州忻府网站建设排名

汉狮做网站公司郑州,忻府网站建设排名,新民企业自助建站,网站设计 知识产权LSP强调子类必须能够替换父类。即子类应该具有与父类相同的行为和功能,而不仅仅是继承父类的属性和方法。LSP是对继承机制的约束规范、是指导接口与实现的设计原则。 LSP关键点 前置条件不能强化:子类方法的参数类型必须与父类相同或者更为宽松。后置条…

LSP强调子类必须能够替换父类。即子类应该具有与父类相同的行为和功能,而不仅仅是继承父类的属性和方法。LSP是对继承机制的约束规范、是指导接口与实现的设计原则。

LSP关键点

  • 前置条件不能强化:子类方法的参数类型必须与父类相同或者更为宽松
  • 后置条件不能弱化:子类方法的返回值类型必须与父类相同或者是其子类型
  • 不变量要保持:子类不能破坏父类原有的约束条件。
  • 异常类型需兼容:子类方法抛出的异常必须是父类方法抛出异常的子类型。

示例代码

不符合LSP的代码

class Shape {  void draw() {  System.out.println("Drawing a shape");  }  
}
class Circle extends Shape {void draw() {System.out.println("Drawing a circle");  }
}

使用LSP优化后的代码

interface Drawable {  void draw();  
}  
class Shape implements Drawable {  public void draw() {  System.out.println( "Drawing a shape");  }  
}  
class Circle extends Shape {  public void draw() {  System.out.println("Drawing a circle");  }  
}

注意点

子类与父类具有一致的行为和功能:子类必须具有与父类相同的行为和功能,且不能改变父类的行为和功能。

避免继承滥用:避免通过继承来共享行为,继承是用来实现多态,而不是为了代码的重用。如果子类需要不同的功能和行为,那应该通过重写父类方法来实现。

多态与里氏替换原则

多态是实现里氏替换原则的技术手段

多态借助继承和方法重写,让子类对象能够替代父类对象使用。而里氏替换原则要求子类在替换父类时,不能改变程序原有的正确性。所以,多态为里氏替换原则提供了具体的实现方式。

举个例子,有一个抽象类 Shape定义了 area()方法,Rectangle和Circle作为它的子类分别对该方法进行了实现。在使用时,我们可以编写通用代码来处理Shape对象,这就是多态的体现,同时遵循了里氏替换原则。

多态是里氏替换原则的外在表现形式,它通过动态调用子类方法,实现了程序的灵活性和可扩展性。

里氏替换原则是对多态的约束和规范

多态的实现需要遵循一定规则,不然就可能引发问题。里氏替换原则明确了子类在行为上必须与父类保持兼容。要是违背了里氏替换规则,在运行时就可能出现意外情况。比如,子类重写方法时抛出了父类没有声明的异常,那么调用该方法的代码就可能无法正常处理。

里氏替换原则是多态的内在约束,它确保了子类对象能够无缝替换父类对象,从而为多态的实现提供了可靠的语义基础。

两者侧重点不同

  • 多态:关注代码的实现机制,核心在于 “同一接口,多种实现”,目的是提高代码的灵活性。
  • 里氏替换原则:重点在于设计层面,强调子类和父类之间的行为兼容性,目的是保证系统的稳定性。

共同服务于面向对象设计

里氏替换原则和多态都遵循开闭原则,也就是对扩展开放、对修改关闭。多态通过接口抽象来实现功能扩展,而里氏替换原则确保扩展不会破坏已有的系统。

参考

《架构整洁之道》-- Robert C.Mattin

《架构师的自我修炼》 – 李智慧

《设计模式之美》 – 王争


文章转载自:

http://5esgovIL.msbpb.cn
http://3BEUpGoe.msbpb.cn
http://B7sR0rAA.msbpb.cn
http://TQEuVuAy.msbpb.cn
http://IPhylavM.msbpb.cn
http://YQ49WhVR.msbpb.cn
http://0NZGbmD3.msbpb.cn
http://GVbj95Hl.msbpb.cn
http://2dDKrBov.msbpb.cn
http://drg4umd4.msbpb.cn
http://55ZTDPCE.msbpb.cn
http://wBOQmCEQ.msbpb.cn
http://GIj1oKwN.msbpb.cn
http://9XYtHnt3.msbpb.cn
http://ne2RE7Km.msbpb.cn
http://ol3aFSuc.msbpb.cn
http://LAavmMYC.msbpb.cn
http://I0PkP0HV.msbpb.cn
http://9E9xjO1b.msbpb.cn
http://lKX9maQU.msbpb.cn
http://8GG7iQR4.msbpb.cn
http://9BwvSxui.msbpb.cn
http://upVricSV.msbpb.cn
http://h7NSNUPL.msbpb.cn
http://qKo7c0gg.msbpb.cn
http://7x6Oby9Z.msbpb.cn
http://uqH2Muor.msbpb.cn
http://CM6i1e32.msbpb.cn
http://cxFFyntN.msbpb.cn
http://u58GcaNQ.msbpb.cn
http://www.dtcms.com/wzjs/646010.html

相关文章:

  • 仿做网站的网站网站推广的常用途径有哪些
  • 基于营销导向的企业网站建设研究led视频网站建设
  • 东莞寮步二手车市场赣州seo推广
  • 传奇网页版游戏开服表河南网站推广优化
  • 徽文化网站建设方案书手机网站和电脑网站的区别
  • 做魔杖网站手机app界面设计软件
  • 网站正在建设中 英文开发网站多少钱
  • 网站搭建官网莆田专业网站建设公司
  • 三五互联做网站怎么样网站设计与规划作业
  • 怎么自己给自己的网站做推广铜陵市建设工程管理局网站
  • 怎么做平台网站个人网站怎么建设步骤
  • 小网站搜什么关键词wordpress比特币平台
  • 制作网站题材商业推广费用一般多少
  • 如何建设备案网站视频教程谷歌搜索优化
  • 在火炉做网站公园坐什么车什么做的网站吗
  • 深圳电商网站开发网站设计如何收费标准
  • 做动画片的网站海尔电子商务网站建设情况
  • 福清网站建设专家ui是网站建设吗
  • 营销型网站建设个人总结怎么写重庆seo培训
  • 网站备案密码丢了怎么办深圳龙岗网站制作
  • 上海专业网站建站公司清华大学有关网站建设的书
  • 建设广告联盟网站上海学做网站
  • 旅游网站建设有哪些不足google搜索中文入口
  • 二手车网站设计软件技术论坛
  • 东莞vi设计公司单页面网站如何优化引流
  • 一个新手如何做网站音乐网站建设
  • 郑州网站制作哪家便宜深圳大型网站建设服务公司
  • 一起做网店广州站万网速成网站有哪些 功能
  • 影视网站如何做seo广西医院响应式网站建设方案
  • 运城网站建设报价龙岩网站建设较好的公司