关联关系
概念:对象和对象之间的连接
A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关联关系
生命周期:如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁
即只要A类对象存在,B类对象就存在
单向关联和双向关联
单向关联:A类关联B类
双向关联:A类关联B类,B类关联A类
聚合和组合,主要区别在于生命周期不同
依赖关系
概念:指一个类使用到了另一个类
A类依赖B类,指的是B的对象作为A类的方法参数存在,称为“use”依赖关系
生命周期:如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收
依赖关系是一种瞬时的关系
但是类B的变化会影响到类A;具体表现在某个method方法中使用
类与类之间的关系总共分四种:另外还有继承关系(链接:下一章总结)、实现关系(本质也是继承关系)
代码示例
1 package summary3;
2
3 import java.util.List;
4
5 //一对一关联:一个学生,只能在一个班级里学习
6 class Classes1 //创建班级类
7 {
8 Student1 S; //这是声明一个学生类
9 }
10 class Student1 //创建学生类
11 {
12
13 }
14
15 //一对多关联:一个学生,可以参加多个班级学习
16 //使用集合解决一对多关联
17 class Classes2 //创建班级类
18 {
19
20 }
21 class Student2 //创建学生类
22 {
23 List Classes2; //创建List集合
24 }
25
26 //使用数组解决一对多关联
27 class Classes3 //创建班级类
28 {
29
30 }
31 class Student3 //创建学生类
32 {
33 Classes3[] Classess; //创建数组
34 }
35
36 //如果两个互相关联的类中有整体和部分的关系,关联关系分为: 聚合和组合,主要区别在于生命周期不同
37 //聚合
38 class Team1 //创建队员类
39 {
40 Player1 player; //声明运动员类
41 }
42 class Player1 //创建运动员类
43 {
44 //创建Team1对象时Player1对象可以不创建,当Player1对象销毁时Team1对象也销毁
45 }
46
47 //组合
48 class Team2 //创建队员类
49 {
50 Player2 p = new Player2 (); //创建运动员类
51 }
52 class Player2 //声明运动员类
53 {
54 //创建Team2对象的时Player2类同样创建,当 Team2对象销毁时,Player2对象也销毁
55 }
56
57 public class HasRelation //关联关系:has
58 {
59 public static void main(String[] args)
60 {
61 Classes1 C1 = new Classes1(); //一对一关联
62 Classes2 C2 = new Classes2(); //一对多关联:集合
63 Classes3 C3 = new Classes3(); //一对多关联:数组
64 Team1 T1 = new Team1(); //关联关系:聚合
65 Team2 T2 = new Team2(); //关联关系:组合
66 }
67 }
1 package summary3;
2
3 class Car //创建一个汽车类
4 {
5 void run(Petrol petrol)
6 {
7 System.out.println("使用:" + petrol.type + ", 汽车跑了起来~");
8 }
9 }
10 class Petrol //创建汽油类
11 {
12 String type; //声明汽油型号
13 Petrol(String type)
14 {
15 this.type = type;
16 }
17 }
18
19 public class UseRelation //依赖关系:汽车启动需要使用汽油
20 {
21 public static void main(String[] args)
22 {
23 Car car = new Car();
24 car.run(new Petrol("93号汽油"));
25 }
26 }