如果一个类包含对另一个类的实例的引用,这被称为聚合。聚合表示"拥有"关系,即一个类"拥有"另一个类的对象。

让我们考虑以下情况:Employee(员工)对象包含许多信息,例如id、name、emailId等。此外,它还包含一个名为address(地址)的对象,该对象包含有关地址的信息,例如城市、州、国家、邮政编码等。下面是一个示例:

class Employee{  
int id;  
String name;  
Address address;//地址是一个类 
...  
}  

在这种情况下,Employee 类具有一个对地址的实体引用,因此可以说 Employee HAS-A 地址的关系。

为什么要使用聚合?

  • 提高代码的可重用性和灵活性。

聚合的简单示例

下面是一个简单的示例,其中我们在 Circle 类中创建了对 Operation 类的引用。

class Operation{  
 int square(int n){  
  return n*n;  
 }  
}  
  
class Circle{  
 Operation op;//聚合 
 double pi=3.14;  
    
 double area(int radius){  
   op=new Operation();  
   int rsquare=op.square(radius);//代码可重用性(即委托方法调用)
   return pi*rsquare;  
 }
 
 public static void main(String args[]){  
   Circle c=new Circle();  
   double result=c.area(5);  
   System.out.println(result);  
 }  
}  

输出:

78.5  

何时使用聚合?

  • 当对象之间没有"is-a"关系时,最好使用聚合来实现代码重用。
  • 仅当关系在所涉及对象的整个生命周期中保持不变时,才应使用继承;否则,聚合是更好的选择。

理解有意义的聚合示例

在这个例子中,Employee 类拥有一个地址对象,地址对象包含了自己的信息,如城市、州、国家等。在这种情况下,可以说 Employee HAS-A 地址的关系。

Address.java

public class Address {  
String city,state,country;  
  
public Address(String city, String state, String country) {  
    this.city = city;  
    this.state = state;  
    this.country = country;  
}  
}  

Emp.java

public class Emp {  
int id;  
String name;  
Address address;  
  
public Emp(int id, String name,Address address) {  
    this.id = id;  
    this.name = name;  
    this.address=address;  
}  
  
void display(){  
System.out.println(id+" "+name);  
System.out.println(address.city+" "+address.state+" "+address.country);  
}  
  
public static void main(String[] args) {  
Address address1=new Address("gzb","UP","india");  
Address address2=new Address("gno","UP","india");  
  
Emp e=new Emp(111,"varun",address1);  
Emp e2=new Emp(112,"arun",address2);  
      
e.display();  
e2.display();  
      
}  
}  

输出:

111 varun
gzb UP india
112 arun
gno UP india

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想