Java | 聚合与组合

本文介绍了Java中类与类之间的关系,包括is-a(继承)、has-a(关联,其中分为聚合aggregation和组合composition)以及use-a(依赖)。重点讲解了聚合和组合的区别,聚合关系相对较松散,类B不负责创建类A对象,而组合关系更为紧密,类A的生命周期受类B控制。通过代码示例进一步阐述了这两种关系的概念。
摘要由CSDN通过智能技术生成

在这里插入图片描述


has-a关系 is-a关系指什么

类之间的关系
简单的说,类和类之间的关系有三种:is-a、has-a和use-a关系。
is-a关系也叫继承或泛化,比如学生和人的关系、手机和电子产品的关系都属于继承关系。
has-a关系通常称之为关联,比如部门和员工的关系,汽车和引擎的关系都属于关联关系;关联关系如果是整体和部分的关联,那么我们称之为聚合关系;如果整体进一步负责了部分的生命周期(整体和部分是不可分割的,同时同在也同时消亡),那么这种就是最强的关联关系,我们称之为合成关系。
use-a关系通常称之为依赖,比如司机有一个驾驶的行为(方法),其中(的参数)使用到了汽车,那么司机和汽车的关系就是依赖关系。
摘自:面向对象进阶

has-a 关联关系,其中分为聚合,组合;
is-a 继承关系
use-a 依赖关系

聚合,组合都代表整体和部分间的关系,组合代表强关系,聚合代表弱关系


聚合 aggregation

空心菱形=>聚合
关系相对松散
聚合类B不需要对被聚合类A负责
没有新开辟空间

聚合类B的对象在创建时不会立即创建被聚合类A的对象
而是等待一个外界的对象给它,传给它的这个对象不是B类创建的

参见例子 Emp.java 中 main() 方法

//Address.java
public class Address {
   
  String city;
  String state;
  String 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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值