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