类之间大体分为5种关系:
1,依赖关系(Dependency),单向
public class Fork {
public void useFork(){
System.out.println("Use fork to eat!");
}
}
public class People {
public void eat(Fork fork){
fork.useFork();
}
}
如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等
2,关联关系(Association),单向或双向,依赖关系的一种
public class Product {
}
public class Order {
public void getOrderDes(){
Prodeuct p = new Product();
...
}
}
即"has a"关系,如果A单向关联B,则可以说A has a B
3,聚合关系(Aggregation),单向,关联关系的一种:
Goods是Market的组成部分,但是Goods可以不在Market初始化的时候初始化。
public class Goods {
}
public class Market {
public Goods goods;
public Goods getGoods(){
goods = new Goods();
return goods;
}
}
通常表现为成员变量
4,组合关系(Composition),单向,关联关系的一种:
public class Head {
}
public class Body {
public Head head;
public Body(){
head = new Head();
}
}
通常表现为成员变量,并且和所属类具有相同的生命周期
5,继承关系(Inheritance)
类实现接口,类继承抽象类,类继承父类都属于这种关系
可以分得更细:
实现(Realization):类实现接口属于这种关系
泛化(Generalization):即"is a"关系,类继承抽象类,类继承父类都属于这种关系
PS:
聚合和组合都属于关联关系,他们之间的区别为:
聚合:聚合关系的2个类生命周期不同
组合:组合关系的2个类生命周期相同