首页 > 其他分享 >什么时候用继承,什么时候用组合呢?

什么时候用继承,什么时候用组合呢?

时间:2023-02-08 19:01:00浏览次数:41  
标签:关系 表达 组合 继承 什么 Person 时候 Arm

继承是对已有的类做一番改造,以此获得一个特殊的版本。简而言之,就是将一个较为抽象的类改造成能适用于某些特定需求的类。因此,对于上面的Wolf和Animal的关系,使用继承更能表达其现实意义。用一个动物来合成一匹狼毫无意义:狼并不是由动物组成的。反之,如果两个类之间有明确的整体、部分的关系,例如Person类需要服用Arm类的方法(Person对象由Arm对象组合而成),此时就应该采用组合关系来实现复用,把Arm作为Person类的组合成员变量,借助于Arm的方法来实现Person的方法,这是一个不错的选择。

总之,继承要表达的是一种“是(is-a)”的关系,而组合表达的是“有(has-a)”的关系。

标签:关系,表达,组合,继承,什么,Person,时候,Arm
From: https://www.cnblogs.com/easycoding20211115/p/17102975.html

相关文章

  • ASEMI整流模块MDQ100-16的优点是什么?
    编辑-ZASEMI整流模块MDQ100-16参数:型号:MDQ100-16最大重复峰值反向电压(VRRM):1600V最大RMS电桥输入电压(VRMS):1700V最大平均正向整流输出电流(IF):100A峰值正向浪涌电流(IFSM):920A每个......
  • 为什么我憎恨Linux系统?
    我是一个追求自由的人。是的,遗憾的是,人生来,本质上是没有自由的。可是吧,我问大家一个问题,我把你一辈子关在一个黑屋子里,只有你自己一个人,没有其他事物的陪伴,不让你出去和外界......
  • ASEMI整流模块MDQ100-16的优点是什么?
    编辑-ZASEMI整流模块MDQ100-16参数:型号:MDQ100-16最大重复峰值反向电压(VRRM):1600V最大RMS电桥输入电压(VRMS):1700V最大平均正向整流输出电流(IF):100A峰值正向浪涌电流(IFSM):9......
  • 用 Pulsar 开发多人小游戏(五):什么是 schema?为什么要用 schema?
    本文是《用Pulsar开发多人在线小游戏》的第三篇,配套源码和全部文档参见我的GitHub仓库play-with-pulsar以及我的文章列表。我推荐《数据密集型应用系统设计》这本......
  • python字符串字面量是什么
    1、Python使用单引号(')、双引号(')、三重单引号('''')和三重双引号(""")来表示字符串字面量。2、字符串字面量需要使用相同类型的引号。例如,如果使用单引号开始字符串,则需......
  • ChatGPT是什么?怎么注册?
    我是卢松松,点点上面的头像,欢迎关注我哦!今年最火的应该就是ChatGPT了,现在短短2个月已经突破了1亿注册用户,马斯克可高兴坏了。估计大家走各大网络平台都刷到过,很多人也看到了......
  • MyBatis中的#和$有什么区别
    什么是MyBatisMyBatis是一款优秀的持久层框架,特别是在国内(国外据说还是Hibernate的天下)非常的流行,我们常说的SSM组合中的M指的就是#mybatis#。MyBatis支持定制化SQL......
  • 什么时候会有多态?
    因为Java的引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,编译和声明有关。运行时类型由实际赋给该变量的对象决定,也就是......
  • javaScript 高级语法 - class创建对象,继承 extends,super,类中this指向问题
    1.class创建对象classHuman{//类constructor(id,name){//构造器this.id=id;//成员变量this.name=name;}info(){//方法console.log("inf......
  • 告诉你数据库的稳定性都在测试什么
    中国信通院给定的稳定性测试的思想如下:保障分布式数据库系统的稳定运行,就先要有测试其稳定性的工具和方法。混沌测试是一种新兴的对分布式系统的稳定性进行测试的技术。其......