Java聚合
1 什么是Java聚合
如果类具有实体引用,则称为聚合。聚集表示HAS-A关系。
例如:Employee对象包含许多信息,例如id,name,emaid等。它还包含一个名为address的对象,该对象包含地址信息,例如省份,城市,地区,邮政编码等,如下所示。
class Employee{
int id;
String name;
Address address;//Address是一个对象
...
}
以上情况,Employee包含实体引用Address,因此关系为Employee HAS-A Address。
2 为什么要使用聚合
- 用于代码可重用性。
3 聚合的示例
在上图中,我们在Circle类中创建了Operation类的引用。
/**
* 一点教程网 - http://www.yiidian.com
*/
//Java聚合的示例
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
4 什么时候使用聚合
- 当没有is-a关系时,最好使用聚合实现代码重用。
- 只有在is-a关系涉及对象的整个生命周期中都保持不变时,才应使用继承。否则,聚合是最佳选择。
5 聚合的实际案例
在下面示例中,雇员具有地址对象,地址对象包含其地址信息,例如省份,城市,地区,邮政编码等。在这种情况下,关系为雇员 HAS-A 地址。
Address.java:
/**
* 一点教程网: http://www.yiidian.com
* 地址类
*/
public class Address {
String province,city,area;
public Address(String province, String city, String area) {
this.province = province;
this.city = city;
this.area = area;
}
}
Emp.java:
/**
* 一点教程网: http://www.yiidian.com
* 雇员类
*/
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.province+" "+address.city+" "+address.area);
}
public static void main(String[] args) {
Address address1=new Address("广东","广州","天河区");
Address address2=new Address("北京","北京","顺义区");
Emp e=new Emp(111,"张三",address1);
Emp e2=new Emp(112,"李四",address2);
e.display();
e2.display();
}
}
输出结果为:
111 张三
广东 广州 天河区
112 李四
北京 北京 顺义区
热门文章
优秀文章