Association in Java

2025年3月28日 | 阅读 5 分钟

Java 中的关联定义了两个类通过其对象建立的连接。关联管理着一对一、一对多多对多关系。在 Java 中,对象之间的多重性由关联定义。它显示了对象之间如何通信以及它们如何使用通信对象的提供的功能和服务。关联管理着一对一、一对多、多对一多对多关系。

Association in Java

让我们举一个关联管理的每种关系的例子。

  1. 一个人只能拥有一本护照。这定义了一对一关系。
  2. 如果我们谈论学院和学生之间的关联,一个学院可以有很多学生。这定义了一对多关系。
  3. 一个州可以有几个城市,而这些城市与同一个州相关。这定义了多对一关系。
  4. 一个学生可以与多个老师关联,而多个学生也可以与一个老师关联。两者是独立创建或删除的,因此它定义了多对多关系。

让我们举一个关联的例子来理解它在 Java 中是如何工作的。

AssociationExample.java

输出

Association in Java

描述

在上面的示例中,我们创建了两个单独的类,即 Person 和 Mobile,它们通过对象关联。一个人可以有很多手机号码,因此它定义了一对多关系。

关联的类型

在 Java 中,可能存在两种类型的关联

  1. IS-A 关联
  2. HAS-A 关联
    1. 聚合 (Aggregation)
    2. 组合 (Composition)
Association in Java

1) IS-A 关联

IS-A 关联也被称为继承。我们都了解 Java 中的继承,如果您不了解,请点击此处

2) HAS-A 关联

HAS-A 关联进一步分为两个部分,即聚合和组合。让我们一个接一个地理解它们之间的区别。

1) 聚合

在 Java 中,聚合关联定义了HAS-A关系。聚合遵循一对一或单向关系。如果两个实体处于聚合组合中,并且一个实体由于某些错误而失败,它不会影响另一个实体。

让我们以玩具和电池为例。电池属于一个玩具,如果玩具损坏并从我们的数据库中删除,电池仍将保留在我们的数据库中,并且可能仍在工作。因此,在聚合中,当存在所有权时,对象始终具有自己的生命周期。

Association in Java

AggregationExample

输出

Association in Java

描述

在上面的示例中,有一个学院拥有 BSC-CS、MCA 和 Poly 等课程。每门课程都有几个学生,因此我们创建了一个 College 类,它具有对 Course 类对象或对象列表的引用。这意味着 College 类通过对象与 Course 类相关。Course 类还具有对 Student 类对象或对象列表的引用,这意味着它通过其对象与 Student 类相关,并定义了HAS-A关系。

Association in Java

2) 组合

聚合的一种受限形式,其中实体高度相互依赖。与聚合不同,组合表示part-of(部分属于)关系。当两个实体之间存在聚合时,聚合对象可以在没有另一个实体的情况下存在,但在组合的情况下,组合对象不能存在。要了解更多关于组合的信息,请点击此处

让我们举一个例子来理解组合的概念。

我们创建了一个名为 Mobile 的类,它包含变量,即 name、ramrom。我们还创建了一个名为 MobileStore 的类,它有一个引用来引用手机列表。一个手机店可以拥有不止一部手机。因此,如果手机店被销毁,那么该手机店内的所有手机也将被销毁,因为手机不能在没有手机店的情况下存在。手机店和手机之间的关系是组合。

CompositionExample.java

输出

Association in Java