关联关系
概念:对象和对象之间的连接
定义: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类对象即被回收
A类和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 }
浙公网安备 33010602011771号