java聚合,组合的理解

聚合

一:基本概念:

聚合是关联的一种属性,代表了两个对象之间的归属关系。即为一个类中有一个类的实体引用(类中的类)。
聚合的主要特点:

  1. 聚合表示HAS-A关系 例如:
class Hello{ 		
	int i; 		
	Address World;
 } 
  1. 这里Hello不仅包括自己的基本对象,还包括了另一个类对象world。Hello HAS-A World
  2. 聚合是一种单向关系。即Hello里面可以有World,但是World里面不能有Hello;
  3. 聚合的关系是地址关系

二:为什么要使用聚合

为了实现代码重用
具体实例:

public class Circle {
	double radius;
	
	public Circle(double radius) {
		this.radius = radius;
	}
	
	double square(double radius) {
		return radius*radius*3.14;
	}
}

上面的代码创建了一个Circle类,来实现圆的面积计算

package helloworld;

public class aggregation {

	Circle circle;
	
	public aggregation(Circle circle) {
		this.circle = circle;
	}
	
	void display() {
		System.out.println("The circle square is "+circle.square(circle.radius));
	}
	
	public static void main(String[] args) {
		Circle newCircle = new Circle(1);
		aggregation sq = new aggregation(newCircle);
		
		sq.display();
	}
}

在这个代码块中可以看到,aggregation中创建了一个Circle类,通过在aggregation类里面的操作修改Circle类
得到的结果如下:

The circle square is 3.14

组合

一:基本概念

如果一个对象只归属于一个聚集对象,那么它和聚集对象之间的关系就成为组合。
组合是一种聚合的限制形式,使用组合关系的两个类相互依赖,并且有以下特征:

  1. 代表part-of关系,意思是一个类是另一个类的一部分
  2. 在组合的关系中,两个实例相互依赖,一个对象必须依赖另一个对象
  3. 组合是把该类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。
  4. 聚合的关系是内容关系

二:具体实例

public class Animal {
	public void name() {
		System.out.print("我是");
	}
}

Animal是一个类

public class Bird {
	public Animal kind;
	
	public Bird(Animal kind) {
		this.kind = kind;
	}
	public void names() {
		kind.name();
	}
	
	public void fly() {
		System.out.println("鸟,在天空飞翔");
	}
}

Bird是将Animal类组合到自己的类里面

package helloworld;
public class WhatAnimal {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Animal a = new Animal();
		Bird b  = new Bird(a);
		b.names();
		b.fly();
	}
}

对上面两类的使用调用得到下面的结果:

我是鸟,在天空飞翔

聚合与组合的区别

聚合:聚合就是一种类包括一种类,但是如果没了这个类原来的类也是可以使用的
组合:组合就是一种类和一种类是相互依赖联系的,如果一个类不能使用,那么类就没有存在的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值