关联关系

   概念:对象和对象之间的连接

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 }