如果一个类的对象是由另一个类中多个对象组合而成,这两个类之间通常具有“组合”(Composition)关系。组合是一种强“拥有”关系,表示一个类是由一个或多个其他类的对象构成的。
在组合关系中,所包含的对象(部分)的生命周期通常与包含它的对象(整体)的生命周期相绑定。当整体对象被创建时,部分对象也会被创建;当整体对象被销毁时,部分对象也会随之被销毁。这种关系通常用于表示更复杂对象的内部结构。
组合与另一种类似的关系“聚合”(Aggregation)不同。聚合也表示整体和部分的关系,但是聚合关系是一种较弱的关联关系,部分对象可以独立于整体对象存在。
在面向对象编程中,组合关系往往通过在包含类中定义包含对象的实例变量来实现。这种方式能够增加代码的模块性和复用性,同时也反映了一种设计原则,即“优先使用对象组合,而不是类继承”。