Cuando un objeto A contiene una referencia a otro objeto B o podemos decir que el Objeto A tiene una relación HAS-A con el Objeto B, entonces se denomina Agregación.
La agregación ayuda a reutilizar el código. El objeto B puede tener métodos de utilidad que pueden ser utilizados por múltiples objetos. Cualquiera que sea la clase que tiene el objeto B entonces puede utilizar sus métodos.
Ejemplo
public class Vehicle{}public class Speed{}public class Van extends Vehicle { private Speed sp;}
Esto muestra que la clase Van TIENE-una velocidad. Al tener una clase separada para la Velocidad, no tenemos que poner todo el código que pertenece a la velocidad dentro de la clase Van, lo que hace posible la reutilización de la clase Velocidad en múltiples aplicaciones.
En la característica Orientada a Objetos, los usuarios no necesitan preocuparse sobre qué objeto está haciendo el trabajo real. Para lograr esto, la clase Van oculta los detalles de implementación a los usuarios de la clase Van. Así que, básicamente, lo que sucede es que los usuarios pedirían a la clase Van que haga una determinada acción y la clase Van hará el trabajo por sí misma o pedirá a otra clase que realice la acción.Este concepto de contener un objeto para hacer la acción se denomina Agregación.