多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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 ``` 在上面的例子中,两个类之间存在一对一的关系( **组合** ):`CarClass`和`Driver`。这两个类代表两个独立的实体。 ## 关联与聚合与组合 让我们讨论关联,聚合和组合之间的**差异:** 尽管这三个都是相关的术语,但它们在两个类的关联方式上存在一些主要差异。 **关联**是两个独立类之间的关系,关联可以是任何类型,例如一对一,一对可以等。它连接两个完全独立的实体。 [聚合](https://beginnersbook.com/2013/05/aggregation/)是一种特殊的关联形式,它是类(或实体)之间的单向单向关系,例如,钱包和金钱课程。钱包有钱,但钱不需要钱包,所以它是一个单向的关系。在这种关系中,如果其他条目结束,这两个条目都可以存活在我们的示例中,如果`Wallet`类不存在,则并不意味着`Money`类不存在。 **组合**是一种限制形式的聚合,其中两个实体(或者你可以说类)高度依赖于彼此。对于例如人与心。人类需要内心生存,心脏需要人体才能生存。换句话说,当类(实体)彼此依赖并且它们的寿命相同时(如果一个人死了,那么另一个也是),那么它就是一个组合。如果没有人类,心课就没有意义。