# OOP 概念 - java 中的关联是什么？

> 原文： [https://beginnersbook.com/2013/05/association/](https://beginnersbook.com/2013/05/association/)

在本文中，我们将讨论 Java 中的**关联。关联通过其**对象**建立两个独立的**类**之间的关系。这种关系可以是一对一，一对多，多对一，多对多。**

### 关联例子

```java
class CarClass{
   String carName;
   int carId;
   CarClass(String name, int id)
   {
	this.carName = name;
	this.carId = id;
   }
}
class Driver extends CarClass{
   String driverName;
   Driver(String name, String cname, int cid){
	super(cname, cid);
	this.driverName=name;
   }
}
class TransportCompany{
   public static void main(String args[])
   {
	Driver obj = new Driver("Andy", "Ford", 9988);
	System.out.println(obj.driverName+" is a driver of car Id: "+obj.carId);
   }
}

```

输出：

```java
Andy is a driver of car Id: 9988

```

在上面的例子中，两个类之间存在一对一的关系（ **Association** ）：`CarClass`和`Driver`。这两个类代表两个独立的实体。

## 关联与聚合与组合

让我们讨论关联，聚合和组合之间的**差异：**

尽管这三个都是相关的术语，但它们在两个类的关联方式上存在一些主要差异。 **关联**是两个独立类之间的关系，关联可以是任何类型，例如一对一，一对可以等。它连接两个完全独立的实体。

[聚合](https://beginnersbook.com/2013/05/aggregation/)是一种特殊的关联形式，它是类（或实体）之间的单向单向关系，例如，钱包和金钱课程。钱包有钱，但钱不需要钱包，所以它是一个单向的关系。在这种关系中，如果其他条目结束，这两个条目都可以存活在我们的示例中，如果 Wallet 类不存在，则并不意味着 Money 类不存在。

**组合**是一种限制形式的聚合，其中两个实体（或者你可以说类）高度依赖于彼此。对于例如人与心。人类需要内心生存，心脏需要人体才能生存。换句话说，当类（实体）彼此依赖并且它们的寿命相同时（如果一个人死了，那么另一个也是），那么它就是一个组合。如果没有人类，心课就没有意义。