什么是 Java 中的组合? 有例子
已发表: 2023-01-27目录
Java 中关联的基础知识:
关联可以在 Java 中定义为使用不同对象的两个单独类之间的互连。 Java关联管理的关系类型有:
- 一对一:每个父类只存在一个派生类。
- 一对多:一个父类可能有多个子类。
- 多对一:一个子类可能与多个超类关联。
- 多对多:多个父类可能与单个子类相关联,更多数量的子类可能与单个父类相关联。
一旦建立了关系,派生类就会与各自的基类进行通信,以重用它们的特性和属性。 Java 中有两种类型的关联。 它们是聚合和组合。
与组合相比,Java 中的聚合是一个更通用的过程。 这些形式基于类之间支持的关系类型。
Java 组合简介:
Java 中实现 Has-A 关系的设计技术称为组合。 继承的过程用于重用代码。 Java 中的组合可以使用引用其他对象的实例变量来完成。 如果一个对象以这样一种方式构成另一个对象,即构成对象没有主要对象的存在就不能存在,这种关系被称为组合。 更具体地说,组合是一个方面,它借助实例变量来描述两个或多个类之间的引用。 在这里,应该在使用即时变量之前创建实例。 让我们以图书馆为例来清楚地理解“组合”的概念。
图书馆里有很多书。 每本书都有不同的作者和书名。 图书馆还应该有一份参考书单。 图书馆还有几本与同一主题或不同主题相关的书籍。 在这里,图书馆对应于主类,书籍可以关联到派生类。 书籍与图书馆之间的关联或关系可视为构成。 这是因为类“Books”完全依赖于类库。 例如,如果图书馆被摧毁,那么里面所有的书也会被摧毁。
查看我们的免费技术课程,在竞争中脱颖而出。

探索我们的热门软件工程课程
LJMU & IIITB 计算机科学硕士 | 加州理工学院 CTME 网络安全证书课程 |
全栈开发训练营 | 区块链PG项目 |
全栈开发中的执行 PG 计划 | |
在下面查看我们所有的课程 | |
软件工程课程 |
Java中Composition的详细说明:
Composition 是 Java 关联的一种形式。 这两个通信类是紧密相连的,其中派生类完全依赖于父类。 在这种情况下派生类的独立存在是不可能的。 例如,没有汽车的发动机是不能独立存在的。 与聚合相比,此关联类型受到高度限制。 组合是一种设计技术,不应与 Java 特性相混淆。
Composition 可用于对具有其他对象作为其构成成员的对象建模。 这些对象之间存在has-a关系。 在这种关联类型中,一个对象包含另一个对象。 因此,组成对象的生存完全依赖于主要对象。 因此,如果包含对象被破坏,组成对象也会受到影响。 因此,组合关系可以看作是整体关系的一部分,没有整体就不可能存在部分。 换句话说,部分会随着整体的删除而自动删除。 这意味着整体与部分有着牢固的关系。
从世界一流大学在线学习软件开发课程。 获得执行 PG 课程、高级证书课程或硕士课程,以快速推进您的职业生涯。

需求软件开发技能
JavaScript 课程 | 核心 Java 课程 | 数据结构课程 |
Node.js 课程 | 课程 | 全栈开发课程 |
NFT课程 | 开发运营课程 | 大数据课程 |
React.js 课程 | 网络安全课程 | 云计算课程 |
数据库设计课程 | Python 课程 | 加密货币课程 |

继承与 Java 中的组合有何不同?
重要的是要注意继承的功能也可以使用 Java 中的组合来实现。 尽管继承和组合都用于为相关类提供代码的可重用性,但两者之间存在细微差别。 这两个过程之间的主要区别在于,组合是一种设计技术,而继承是一种 Java 特性。 下表列出了两者之间的其他主要区别。
范围 | 作品 | 遗产 |
基本的 | 它包含一个 HAS-A 关系。 | 它包含一个 IS-A 关系。 |
代码重用 | 代码可以在多个类中重用。 | 代码的重用只能在一个类中进行,因为一个类只能扩展一个接口。 |
范围 | 它可以在运行时轻松完成。 | 这些功能在编译时可以更好地完成。 |
最终的 | 它促进了代码的重用,甚至是来自最终类的代码。 | 在继承的情况下,不能重用最终类中的代码。 |
方法 | 方法没有公开。 公共接口用于它们的交互。 | 继承公开基类的受保护和公共方法。 |
聚合和组合之间的差异:
聚合 | 作品 |
它是一种弱 Java 关联。 | 与聚合相比,它是一种更强的关联类型。 |
派生类独立于基类。 因此,即使基类被销毁,派生类也可以继续存在。 | 派生类完全依赖于基类。 因此,如果超类被销毁,子类将不存在。 |
子类有自己的生命周期。 | 子类的生命周期依赖于父类。 |
父类在这种关联中使用子类。 因此,派生类不属于基类。 | 在这种关联类型中,父类拥有子类。 因此,父类是子类的所有者。 |
它构成了一个HAS-A关系。 派生类有一个基类。 | 它构成了部分关系。 派生类是基类的一部分。 |
final 关键字不用于表示聚合。 | final 关键字可用于表示组合。 |
示例:汽车有司机。 | 示例:发动机是汽车的一部分。 |
阅读我们与软件开发相关的热门文章
如何在 Java 中实现数据抽象? | Java中的内部类是什么? | Java 标识符:定义、语法和示例 |
通过示例了解 OOPS 中的封装 | C 中的命令行参数解释 | 2022 年云计算的十大特点 |
Java 中的多态性:概念、类型、特征和示例 | Java 中的包以及如何使用它们? | Git 初学者教程:从零开始学习 Git |
在 Java 中使用组合的优点:
- 组合有助于 Java 代码的重用。
- 尽管 Java 不支持多重继承,但这种设计技术可以填补这一空白。
- 通过组合的使用,可以更好地测试一个班级的能力。
- 使用组合使代码更加灵活。 组合类实现可以替换为增强版本。
- 利用组合关系,可以在运行时更改对象成员,以实现程序行为的动态变化。
Java 中组合的局限性:
在 Java 中使用组合有一些缺点。 对象组合的主要缺点是用户很难仅通过仔细研究源代码来理解已实现系统的行为。 使用对象组合的系统本质上是高度动态的。 因此,了解使用对象组合的系统的功能需要对源代码进行更深入的分析并运行代码以见证源代码中各个对象之间的功能和协作。
如果您有兴趣了解有关 Java、全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的软件开发执行 PG 课程——全栈开发专业化,该课程专为在职专业人士设计,并提供 500 多个小时的严格培训、9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
