Java中的聚合是什么?为什么需要聚合?

时间:2020-02-23 14:33:54  来源:igfitidea点击:

在编写Java程序时,如果要使用其引用将一个类链接到另一个类,则可以使用Java中的Aggregation。
因此,让我们学习聚合如何在Java中工作。

什么是聚合(Aggregation)?

在了解什么是聚合之前,让我们学习Java中的关联。
关联被称为通过它们的对象建立的两个单独的类之间的关系。
它可以是一对一,一对多,多对一,多对多。
让我们用一个例子来了解关联。

package theitroad;
class School
{
private static String name;
//bank name
School(String name)
{
this.name = name;
}
public static String getSchoolName()
{
return name;
}
}
//employee class
class Student
{
private String name;
//employee name
Student(String name)
{
this.name = name;
}
public String getStudentName()
{
return this.name;
}
}
//Association between both the
//classes in main method
public class Association
{
public static void main (String[] args)
{
School newSchool = new School("Java Class");
Student stu = new Student("Vian");
System.out.println(stu.getStudentName() +
" is a student of " + School.getSchoolName());
}
}

Vian是Java班的学生

现在,让我们看看什么是Java中的聚合。

聚集实际上是一种特殊的关联形式。
这意味着它被称为两个类(如Association)之间的关系。
但是,这是一个方向关联,这意味着它严格遵循单向关联。
这代表了HAS-A关系。

它被认为是协会关系的一种更专业的版本。
Aggregate类包含对另一个类的引用,并且据说具有该类的所有权。
所引用的每个类均被视为Aggregate类的一部分。

现在说,例如,如果A类包含对B类的引用,而B类包含对A类的引用,则无法确定明确的所有权,并且该关系仅是Association中的一种。

让我们看一下这个例子:

package theitroad;
class Address
{
int streetNum;
String city;
String state;
String country;
Address(int street, String c, String st, String coun)
{
this.streetNum=street;
this.city =c;
this.state = st;
this.country = coun;
}
}
class Employee
{
int EmployeeID;
String EmployeeName;
//Creating HAS-A relationship with Address class
Address EmployeeAddr;
Employee(int ID, String name, Address addr){
this.EmployeeID=ID;
this.EmployeeName=name;
this.EmployeeAddr = addr;
}
}
public class Aggregation {
public static void main(String args[]){
Address ad = new Address(2, "Bangalore", "Karnataka", "San Franceco");
Employee obj = new Employee(1, "Suraj", ad);
System.out.println(obj.EmployeeID);
System.out.println(obj.EmployeeName);
System.out.println(obj.EmployeeAddr.streetNum);
System.out.println(obj.EmployeeAddr.city);
System.out.println(obj.EmployeeAddr.state);
System.out.println(obj.EmployeeAddr.country);
}
}

现在我们可能有这个问题。
为什么要在Java中确切使用此聚合?

为什么需要聚合?

我们需要聚合的主要原因是为了保持代码的可重用性。
例如,如果我们创建与上述示例相同的类,则需要维护当前雇员的详细信息。
并且,我们不必一次又一次使用相同的代码,而是在定义它们时使用类的引用。