专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

面向对象设计原则有哪些(常用六大面向对象设计原则介绍)

来源:小嗨整编  作者:小嗨  发布时间:2023-02-16 06:31
摘要:面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)面向对象设计原则:,单一职责原则、开放关闭原则、里式替换原则、依赖倒置原则、接口隔离原则、迪米特法则、组合复用原则;...

换句话来说,只要是猴类适用的,猕猴和石猴都适用,这其实就是里式替换原则。

这是第一种解释,还有第二个更加通俗易懂的解释: 所有引用基类的地方必须能透明地使用其子类的对象。

第二种定义比较通俗,容易理解:只要有父类出现的地方,都可以用子类来替代,而且不会出现任何错误和异常。但是反过来则不行,有子类出现的地方,不能用其父类替代。

实例代码 :

public class TestA {

public void fun(int a,int b){

System.out.println(a+"+"+b+"="+(a+b));

}

public static void main(String[] args) {

System.out.println("父类的运行结果");

TestA a=new TestA();

a.fun(1,2);

//父类存在的地方,可以用子类替代

//子类B替代父类A

System.out.println("子类替代父类后的运行结果");

TestB b=new TestB();

b.fun(1,2);

}

}

class TestB extends TestA{

@Override

public void fun(int a, int b) {

System.out.println(a+"-"+b+"="+(a-b));

}

}

大家肯定也都能猜出来结果是什么样子的

父类的运行结果

1+2=3

子类替代父类后的运行结果

1-2=-1

Process finished with exit code 0

我们想要的结果是“1+2=3”。可以看到,方法重写后结果就不是了我们想要的结果了,也就是这个程序中子类B不能替代父类A。这违反了里氏替换原则原则,从而给程序造成了错误。

子类中可以增加自己特有的方法

这个很容易理解,子类继承了父类,拥有了父类和方法,同时还可以定义自己有,而父类没有的方法。这是在继承父类方法的基础上进行功能的扩展,符合里氏替换原则。

public class TestA {

public void fun(int a,int b){

System.out.println(a+"+"+b+"="+(a+b));

}

public static void main(String[] args) {

System.out.println("父类的运行结果");

TestA a=new TestA();

a.fun(1,2);

//父类存在的地方,可以用子类替代

//子类B替代父类A

System.out.println("子类替代父类后的运行结果");

TestB b=new TestB();

b.fun(1,2);

b.newFun();

}

}

class TestB extends TestA{

public void newFun(){

System.out.println("这是子类的新方法...");

}

}

这次运行出来的代码结果就是我们意料中的内容了

父类的运行结果

1+2=3

子类替代父类后的运行结果

1+2=3

这是子类的新方法...

Process finished with exit code 0

AVA语言对里式替换原则支持的局限 :

JAVA编译器的检查是有局限性的,为什么呢?举个例子来说,描述一个物体大小的量有精度和准确度两种属性。所谓的精度,就是这个量的有效数字有多少位;而所谓的精准度,是这个量与真实的物体大小相符合到什么程度。

一个量可以有很高的精度,但是却无法与真实物体的情况相吻合,JAVA语言编译器能够检查的,仅仅是相当于精度的属性而已,它没有办法去检查这个量与真实物体的差距。

换一句话来说,JAVA编译器不能检查一个系统在实现和商业逻辑上是否满足里式替换原则。

而里式替换原则在设计模式中也有体现,请关注我们的知识星球,链接在文末,我们将每周更新一篇关于设计模式的文章。


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903083_2.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • 设计教程资源网(设计教程网站有哪些)?

    设计教程资源网(设计教程网站有哪些)?

    设计教程资源网(设计教程网站有哪些)?随着互联网的快速发展,设计行业也日益繁荣。越来越多的设计师和设计爱好者希望在网上找到优质的设计教程资源,以提高自己的设计水平。本文将为您介绍一些国内优秀的设计教程资源网站,助您在设计道路上更进一步。设计...

  • 机械设计软件有哪些软件(机械设计软件哪个好)?

    机械设计软件有哪些软件(机械设计软件哪个好)?

    机械设计软件有哪些软件(机械设计软件哪个好)?机械设计常用的三大软件分别是CAD、SW、UG,下面带来十款好用的机械设计软件。机械设计软件推荐一、SolidWorksSolidWorks软件是世界上第一个基于Windows开发的三维CAD系...

  • 建筑设计软件有哪些软件(建筑设计软件哪个好用)?

    建筑设计软件有哪些软件(建筑设计软件哪个好用)?

    建筑设计软件有哪些软件(建筑设计软件哪个好用)?在建筑效果图制作过程中,为了追求精细化和高效率,设计师们通常会使用多种软件协同作业。本文将介绍六款好用的建筑设计软件。每款软件都有自己的擅长之处。结合各自优势来完成效果图中不同环节的制作。第一...

  • 包装设计软件免费版(包装设计软件哪个好用)?

    包装设计软件免费版(包装设计软件哪个好用)?

    包装设计软件免费版(包装设计软件哪个好用)?小白如何一键做包装设计?下面给大家介绍一款非常好用的包装设计工具——ArtiosCAD,简单易上手!ArtiosCAD是用于设计包装的全球最流行的结构设计软件。 ArtiosCAD拥有专为包装设计...

  • 三维设计软件有哪些(三维设计软件哪个好用)?

    三维设计软件有哪些(三维设计软件哪个好用)?

    三维设计软件有哪些(三维设计软件哪个好用)?三维设计软件种类繁多,功能各异,很难说谁家最强,这取决于具体的使用场景和需求。以下是一些比较受欢迎的三维设计软件:一、SolidWorksSolidWorks是一款非常受欢迎的三维CAD软件,广泛...

  • 我的世界房子设计图教程(我的世界房子设计图简单漂亮)

    我的世界房子设计图教程(我的世界房子设计图简单漂亮)

    我的世界房子设计图教程(我的世界房子设计图简单漂亮)玩过MC我的世界的朋友都知道,搭建属于一个自己的生存小屋是必不可少的,如果你还只是停留在挖个地洞带个床的阶段,不妨看看这篇文章,这篇文章将教会你如何搭建一个简单实用的生存小屋!第一步,先打...

  • 平面设计用什么软件好(平面设计5大软件)?

    平面设计用什么软件好(平面设计5大软件)?

    平面设计用什么软件好(平面设计5大软件)?下面推荐五款备受好评的平面广告设计软件,易于使用!1.即时设计即时设计是国内一款UI设计工具,像PC端的网页,移动端的App、小程序页面,都可以通过即时设计高效完成。现在,也有越来越多的设计师,用即...

  • pcb设计软件有哪些(pcb设计软件哪个好)?

    pcb设计软件有哪些(pcb设计软件哪个好)?

    pcb设计软件有哪些(pcb设计软件哪个好)?随着电子科技的迅速发展,印刷电路板(PCB)设计成为电子设备制造的至关重要的环节。高效且精确的PCB设计软件能够有效帮助工程师进行电路设计、布局布线及优化分析等工作。以下介绍一些目前市场上广受欢...

  • 周排行
  • 月排行
  • 年排行

精彩推荐