只要是在类需要用到对方,那么他们之间就存在依赖关系,如果不存在用到的类,无法通过编译
class B{
private C c;
public C getC(){
return c;
}
}
class C{
}
class A{
private B b;
public C getC(){
return b.getC();
}
}
这里就表示A依赖B和C,B依赖C
泛化关系实际上就是继承关系,它是依赖关系的特例
class B{
}
class A extends B{
}
这里A泛化(继承)了B
实现关系实际上就是A实现了B中抽象的方法,它是依赖关系的特例
interface B{}
class A implements B{}
这里A实现了B
关联关系实际上就是类与类之间的联系,他是依赖关系的特例
关联具有导航性:即双向关系和单向关系
关系具有多重性,如1表示一个,0…表示0个或多个,“0,1”表示0个或者一个,“n,m”表示n到m个都可以,m…表示至少m个
class B{
}
class A{
private B b;
}
这是单向关联
class B{
private A a;
}
class A{
private B b;
}
这是双向关联
聚合关系表示的是整体和部分的关系,整体和部分可以分开,聚合关系是关联关系的特例,所以它具有方向性和多重性(类中某个属性,可以为null,也可以通过set方法来设置值,则表示聚合)
class A{
private B b;
public void setB(B b){
this.b = b;
}
}
这里B聚合于A
组合关系也是整体和部分的关系,但是整体和部分不可以分开,因为整体是由部分组成的,不可或缺,(类中某个属性,有非空默认值,或者该值在构造器中赋值,表示组合关系)
class A{
private B b = new B();
}
这里B组合于A