猿教程 Logo

Java聚合

如果一个类有一个实体引用,它被称为聚合。 聚合表示HAS-A关系。

考虑一种情况,Employee对象包含许多信息,例如id,name,emailId等。它包含另一个对象命名地址,其包含它自己的信息,例如城市,州,国家,邮政编码等,如下所示。

class Employee{
int id;
String name;
Address address;//Address is a class
...
}

在这种情况下,Employee有一个引用地址的实体,因此关系是Employee HAS-A Address。


为什么使用聚合?

  • 代码可重用性。

聚合的简单示例


在这个例子中,我们在Circle类中创建了Operation类的引用。

class Operation{
 int square(int n){
  return n*n;
 }
}

class Circle{
 Operation op;//aggregation
 double pi=3.14;
  
 double area(int radius){
   op=new Operation();
   int rsquare=op.square(radius);//code reusability (i.e. delegates the method call).
   return pi*rsquare;
 }

   
  
 public static void main(String args[]){
   Circle c=new Circle();
   double result=c.area(5);
   System.out.println(result);
 }
}
Output:78.5

何时使用聚合?

  • 当没有is-a关系时,通过聚合也最好地实现代码重用。

  • 只有在所涉及的对象的整个生命周期内保持关系为a时,才应使用继承; 否则,聚合是最好的选择。


了解聚合的有意义的示例

在此示例中,Employee具有Address对象,address对象包含其自己的信息,例如城市,州,国家等。在这种情况下,关系是员工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();
	
}
}
Output:111 varun
       gzb UP india
       112 arun
       gno UP india


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/aggregation-in-java.html