主要介绍java中的关联关系、聚合关系、合成关系以及依赖关系
顺便介绍is-a
,is-like-a
,has-a
类之间的关系
泛化关系
类和类之间的继承关系以及接口与接口之间的继承关系
实现关系
类对接口的实现
关联关系
类与类之间的连接,一个类可以知道另一个类的属性和方法,在java语言中使用成员变量体现
Me me = new Me(new Friend())
//建立关联关系
-
例如我和朋友的关系
- 我可以找到我朋友的地址
public class Friend{ public String addr; } class Me{ Friend f; public Me(Friend f){ this.f = f; } // test public static void main(String[] args){ Friend f = new Friend(); Me me = new Me(f); System.out.println(me.f.addr)//获取朋友的地址 } }
聚合关系
聚合关系是关联关系的一种,是较强的关联关系,是整体和部分的关系。例如:汽车和轮胎
和关联关系不同,关联关系的类处于同等的层次上,而聚合关系的类处于不同等的层次上,一个代表整体,一个代表部分
聚合关系是整体和部分的关系
整体不依赖部分
部分也不依赖整体
整体无法决定部分的声明周期(人和四肢的关系就不属于聚合关系)
-
例如教室和学生的关系
public class Student{ } public class ClassRoom{ List<Student> s; }
合成关系
合成关系也是关联关系的一种,比聚合关系更强一些
合成关系和聚合关系是相似的,区别在于:
合成关系的整体和部分是紧密联系的,整体的生命周期决定部分的生命周期
-
例如人和四肢的关系
public class human{ List<四肢> s; }
依赖关系
依赖关系比较弱,是一种比关联关系弱的一种关系
在
java
语言中体现在:返回值、参数、局部变量和静态方法的调用
-
例如
public class Test{ public void m1(){ User user = new User();//依赖关系 } } class user{ }
is-a
/is-like-a
/has-a
is-a
-
Dog is a Animal
-
is-a 是继承关系
public class Animal{ } class Dog extends Animal{ }
is-like-a
-
A is like a I
-
is-like-a 是实现关系
public Interface I{ void m1(); } class A implements I { public void m1(){ } }
has-a
-
A has a B
-
has-a 是包含关系
public class B{ } class A{// A has a B private B b; }