http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html

类与类之间的几种关系

一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。


二、实现关系      实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。

三、依赖关系      简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。


四、关联关系  关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。


五、聚合关系      聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。


六、组合关系     组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。


七、总结     对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

我喜欢,驾驭

类与类之间的几种关系相关推荐

  1. 浅谈UML类图中类之间的5种关系

    什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...

  2. 面向对象类和类之间的几种关系

    一.继承关系      继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一 ...

  3. UML--类之间的五种关系

    UML中的关系(Relationships)主要包括5种:关联关系.聚合关系.依赖关系.泛化关系.实现关系 1.关联(Association)关系 关联关系是一种结构化的关系,指一种对象和另一种对象有 ...

  4. SQL外键foreign key 表与表之间的三种关系

    表与表之间的三种关系 多对一关系表 注意事项: 一对多表关系,外键字段建在多的一方. 在创建表的时候,一定要先建被关联表. 在录入数据的时候,也必须先录入被关联表. 删除 一定要先删除主键表,才可以删 ...

  5. UML 类之间的几种关系

    2019独角兽企业重金招聘Python工程师标准>>> 许久不用uml,又忘记这部分资料了,现给记录下.本资料为引用资料,传送门:http://uml.org.cn/oobject/ ...

  6. UML中类之间的几种关系

    类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...

  7. 数据库设计(表与表之间的3种关系)

    表与表之间一般存在三种关系,即一对一,一对多,多对多关系.  下面分别就三种关系讲解数据库相关设计的思路和思考过程: (1)一对一关系  例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有 ...

  8. UML 中对象和对象之间的几种关系及图例,画法(泛化,依赖,聚合,组合,实现,关联)

    1. 泛化关系 表示一个对象(子对象)继承另外一个对象(称为父对象)的能力,并可以增加它自己新功能的能力 2. 依赖关系 表示一个类使用到了另一个类,被依赖类的变化会影响到类本身 3. 聚合关系 表示 ...

  9. 图像处理基础(三)_像素之间的3种关系

最新文章

  1. sql server 配置管理器里为什么是32位_死磕 Nginx 系列:Nginx 限流配置
  2. ITK:使用GMM EM进行分布式采样
  3. python加载函数包_Python wrapt包_程序模块 - PyPI - Python中文网
  4. android布局DSL,android – 使用自定义Anko布局DSL解除警报对话框
  5. 超融合带来的IT人员问题 企业是否看到?
  6. 还在用代码苦苦调试大屏?用这个神器1小时搞定
  7. Linux find xargs rm .orig
  8. 20款免费公司企业wordpress主题
  9. android soundpool 封装,Android中使用SoundPool来播放音频
  10. 2019年我能变强组队训练赛第十场 C Criss-Cross Cables(优先队列模拟)
  11. 宏电4g路由器流量卡怎么设置_宏电4g无线路由器设置_4g路由器怎么设置网口
  12. 60、JAVA的map集合
  13. win10电脑自带的office突然变成英文解决办法
  14. 2022年8月及1-8月国内动力电池企业装车量排名:“宁王”第一,“迪王”猛追
  15. 【轮播图】使用bootstrap轮播插件(Carousel)
  16. 江苏省2022年普通高校专转本选拔考试 计算机专业大类专业技能 试题卷
  17. 手把手教你设计短信验证码
  18. batch批处理小记
  19. 如何用Excel制作工作计划表
  20. 上位机学习系列总计笔记(一)

热门文章

  1. 无锡设计培训——室设行业现状与发展前景
  2. Window安装Prometheus
  3. A*算法详解(讲的一级棒 )
  4. NLP-生成模型-2019:TransformerXL【对Vanilla Transformer的改进:片段级递归机制、相对位置编码】【超出固定长度上下文的注意力语言模型】
  5. 三位数自动递增编号函数_Excel单元格自动填充编号、序列、18位长数字与数字+字母+数字...
  6. 【Field xx in xxx.xx.xx required a bean of type ‘xx.xx.xx‘ that could not be found】排查和解决办法
  7. GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat
  8. 【Java从零到架构师第二季】【14】AJAX
  9. 电子签章怎么操作_电子签章合同是否有效
  10. Mocha and Railgun