继承

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间 最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;

实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性

继承和实现又可以统称为泛化

依赖

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

[具体表现] 依赖关系表现在局部变量,方法的参数,以及对静态方法的调用

[现实例子]

比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作

[代码表现]

?
<strong>public class Person{   <br>    /** 拧螺丝 */  <br>    public void screw(Screwdriver screwdriver){   <br>        screwdriver.screw();   <br>    }   <br>}<br></strong>

[UML图]

关联

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性 的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联 类A引用了一个类型为被关联类B的全局变量;

[具体表现] 关联关系是使用实例变量来实现

[现实例子]

比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司

[代码表现]

?
<strong> public class Company{   <br>     private Employee employee;   <br>     public Employee getEmployee(){   <br>         return employee;   <br>     }   <br>     public void setEmployee(Employee employee){   <br>         this.employee=employee;   <br>     }   <br>     //公司运作   <br>     public void run(){   <br>         employee.startWorking();   <br>     }   <br> }  <br></strong>

[UML图]

聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期, 部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来 区分;

[具体表现]

与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。

[UML图]

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此 时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区 分;

[UML图]

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

转载于:https://www.cnblogs.com/18fanna/p/3388682.html

[zz] 几种类间关系:继承、实现、依赖、关联、聚合、组合及UML实现图相关推荐

  1. UML关系(泛化,实现,依赖,关联(聚合,组合))

    UML的构造快包含3种: (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图,类图,对象图,包图, ...

  2. 【UML关系(泛化、实现、依赖、关联(聚合,组合))】

    UML关系(泛化,实现,依赖,关联(聚合,组合))

  3. UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

    zz from: http://dev.firnow.com/course/3_program/java/javajs/20090219/155939.html UML中几种类间关系:继承.实现.依赖 ...

  4. 转:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    转:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 原文:https://www.cnblogs.com/firstcsharp/p/5327659.html 类与类图 1) 类(Clas ...

  5. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...

  6. ULM图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    在UML中,类使用包含类名.属性和操作且带有分隔线的长方形来表示,如定义一个Employee类,它包含属性name.age和email,以及操作modifyInfo() public class Em ...

  7. 2019-9-17【Javase】object、final、实现关系、抽象类、接口、多态、UML类图

    文章目录 Object类 1.equals() hashCode():hash算法 toString(): 一.final 修饰: 类 ,方法,变量: 类: 此类不能被继承: 方法:不能被重写: 变量 ...

  8. java 泛化_(转)Java中的泛化,依赖,关联,聚合,合成

    本文参考 今天给一个很有思想网友解释 关联, 聚合,合成 的区别.结果把我自己给绕进去了.赶紧的 查漏补缺. 做个备份. 处于聚合关系的两个类生命周期不同步,则是聚合关系:处于组合关系的两个类的生命周 ...

  9. UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 - 老唐 的专栏 -... (转载)

    这是一堂关于UML基础知识的补习课:现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了:本篇主要就以前自己一直感觉很迷糊的几种class之间的 ...

最新文章

  1. 函数 —— strncpy() (内存重叠) memcpy() memmove() 一个字符串拷贝给另一个字符串
  2. 【Linux 内核】进程管理 task_struct 结构体 ③ ( real_parent 字段 | parent 字段 | group_leader 字段 | real_cred、cred字段 )
  3. go语言能编android程序吗,用 Golang 开发 Android 应用(二)—— 简单 UI-Go语言中文社区...
  4. [知识图谱实战篇] 八.HTML+D3绘制时间轴线及显示实体
  5. PHP 使用 OSS 批量删除图片
  6. 在Spring Framework中通过JNDI进行配置
  7. 【数据库】Oracle用户、授权、角色管理
  8. 力扣21.合并有序链表
  9. JAVA入门[5]-初步搭建SpringMVC站点
  10. Windows服务编写原理及探讨(三)
  11. Windows Hello安装和体验
  12. 小米应用市场隐私政策
  13. 虚拟机配置文件vmx放置路径问题
  14. Android开发 自定义控件 边框TextView
  15. 命令与征服3 凯恩之怒
  16. LDK 7.1开发包正式发布
  17. Java程序员必备的几款开发工具,高效才是硬道理!
  18. 游戏翻译工具截屏翻译工具源代码 图片单词识别
  19. 项目教程 | Pycharm+Pyqt5+Eric6实现逻辑与界面分离(实例教学)
  20. 职称是啥?职称是不是只能在国企事业单位申报呢?

热门文章

  1. 【字符串操作之】大小写转换→→toLocaleLowerCase、toLocaleUpperCase
  2. 数组中子数组运算常见写法
  3. leetcode算法题--最大加号标志★
  4. 我在51CTO微职位学软考——网络工程师
  5. PHP如何验证以太坊签名
  6. Leetcode-探索 | 旋转数组
  7. 【转】linux tar 压缩
  8. centos6.7x86_64安装nginx (good)
  9. 【LeetCode】004 Median of Two Sorted Arrays 两个排序数组合并后的中位数
  10. 记录一次Mac虚拟机安装的过程(有图有真相)