シュウヤクあるクラスの機能を持つクラスのこと。特定のクラスの機能を、自分が作るクラスにも持たせたい場合に、継承を使わずフィールドとしてそのクラスを持ち、そのクラスのメソッドを呼び出すメソッドを持たせること。することで、クラスに他のクラスの機能を組み込むことができる。オブジェクト指向用語。厳密なオブジェクト指向では、継承は「機能の継承」を目的とせず、「スーパークラスはサブクラスの一種である」といういわゆる「is-a」の関係を持たなければならない。そのため、単に機能を持たせたい場合には、継承ではなく集約を使用することが推奨される。メリットとして、「機能の継承」はクラスの関連図をイメージする際に分かりにくくなりやすいためそれを回避できる、メソッドをワンクッション置くことで融通が効く、といったものがある。集約の対象となるクラスは、そのサブクラスも使用できることになる。デメリットとしては、同じメソッドを作らなければならない、集約の対象となるクラスに変更があった場合には同じように変更しなければならない場合がある、等である。Java的には、言語仕様上特別なことは必要なく、単にフィールドとして別クラスを持ち、その別クラスを呼び出すメソッドを作ればよい。集約とはシンタックスではなくセマンティクスな用語である。似たようなものに「コンポジション」がある。コンポジションと集約は非常に似ており、オブジェクト指向の常としてこの両者は曖昧である。一応、コンポジションは集約の一種であり、集約の中でも元のクラスと対象のクラスの結び付きが強く寿命が同じであるという差異があるが、Javaでは実装上その差を付けることは難しい。集約クラスを使ってみます。StringBufferの集約クラス。