0
点赞
收藏
分享

微信扫一扫

Java面试八股之组合、聚合和关联三者的区别是什么

求索大伟 2024-06-09 阅读 5
  1. 组合、聚合和关联三者的区别是什么

关联(Association):

最基本的一种关系,表示一个类知道另一个类的存在,或者说是类之间的某种联系。

关联可以是双向的也可以是单向的,且不规定参与关联的对象的生存周期。

实例:老师与学生之间的关系,学生可以有多个老师,老师也可以教授多个学生,但删除一个老师或学生不会直接影响到对方的存在。

聚合(Aggregation):

一种特殊的关联,表示整体与部分的关系,但这种关系比较松散。

部分对象可以在不同的整体对象间共享,且部分的生命周期不完全依赖于整体。即使整体被销毁,部分对象仍然可以独立存在。

在UML中,聚合通常用空心菱形表示。

实例:汽车(整体)和轮胎(部分)的关系,轮胎可以被安装在不同的汽车上,即使汽车报废,轮胎依然可以被重新利用。

组合(Composition):

也是整体与部分的关系,但比聚合更强烈,是一种“强拥有”的关系。

部分对象的生命周期严格依赖于整体对象,一旦整体对象被销毁,部分对象也随之消失,不能独立存在。

在UML中,组合通常用实心菱形表示。

实例:人体(整体)和心脏(部分)的关系,心脏不能脱离人体单独存在,如果人体不存在,心脏也就没有存在的意义。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

举报

相关推荐

0 条评论