Agregación en Java es una relación entre dos clases que se describe mejor como una relación "has-a" y "todo / parte". Es una versión más especializada del relación de asociación. La clase agregada contiene una referencia a otra clase y se dice que es propietaria de esa clase. Cada clase referenciada se considera parte de la clase agregada
La propiedad se produce porque no puede haber referencias cíclicas en una relación de agregación. Si la Clase A contiene una referencia a la Clase B y la Clase B contiene una referencia a la Clase A, entonces no se puede determinar una propiedad clara y la relación es simplemente de asociación.
Por ejemplo, si imagina que una clase de Estudiantes almacena información sobre estudiantes individuales en una escuela. Ahora asuma una clase de Asunto que contiene los detalles sobre un tema en particular (por ejemplo, historia, geografía). Si la clase Student está definida para contener un objeto Asunto, entonces se puede decir que el objeto Student tiene un Sujeto objeto. El objeto sujeto también constituye
parte de el objeto Estudiante: después de todo, no hay estudiante sin una asignatura para estudiar. El objeto Estudiante, por lo tanto, posee el objeto Sujeto.