关联关系

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

   定义: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. }

Java关联关系、依赖关系的更多相关文章

  1. 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

    类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...

  2. AJPFX关于java的依赖 关联 聚合的关系解释

    依赖:  两个相对独立的系统,当一个系统要构筑另一个系统的实例,或者依赖另一的服务时,这两个就是依赖关系.比如自行车和打气筒之间就是依赖关系.代码表现形式如下:    public class A{  ...

  3. 【java】javac编译多个有依赖关系的java文件为class文件

    历史文章: [jar]JDK将单个的java文件打包为jar包,并引用到项目中使用[MD5加密] [java]javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序[解 ...

  4. java中类的关系的总结

    类和类之间存在多种关系,而这种关系在我们的代码中司空见惯,有时多种类关系很难区分 (由于水平有限,没有画出类的关系图,关系图可以参考参考链接) 继承关系 继承是指一个子类(子接口)继承父类(父接口)然 ...

  5. [UML]UML系列——类图class的依赖关系

    相关文章          [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列—— ...

  6. Spring 3.x jar 包详解 与 依赖关系

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...

  7. Spring 3.x jar 包详解 与 依赖关系(转)

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...

  8. Spring依赖关系

    在Spring中,各个模块的依赖关系通过简单的IoC配置文件进行描述,使这些外部化的信息集中并且明了,我们在使用其他组件服务时,只需要去配置文件中了解和配置这些依赖关系即可,也就是说这里关心的是接口, ...

  9. Gradle用户指南(章8:依赖关系管理基础)

    章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...

随机推荐

  1. PAT 1029 旧键盘(20)(代码)

    1029 旧键盘(20)(20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 ...

  2. 利用Swoole编写一个TCP服务器,顺带测试下Swoole的4层生命周期

    1首先我们写一个入口脚本,这里简单点的功能就是开启服务和关闭服务 <?php //CLI命令 if(isset($argv[1]) && in_array($argv[1], [ ...

  3. 如何在Windows下安装Tomcat服务器

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选服务器.在Windows下安装 ...

  4. 安装php_sqlsrv扩展

    https://www.cnblogs.com/wtcl/p/7727636.html

  5. Tag file

    JSP 2.0 引入 Tag file ,tag file 以 tag 或 tagx 为后缀,它们可以包含其他资源文件:一个被其他文件包含的 tag file 应该以 tagf 为后缀. 如同JSP页 ...

  6. STL基础3:map

    #include <iostream> #include <map> #include <string> using namespace std; #define ...

  7. oracle导入sql文件关闭回馈

    set feedback off --关闭回馈 set define off --关闭转义关键字

  8. 2016年3月31日_应化所群体Review

    Review目的: Phonegap的ble插件可以接收到设备发送的信息,但接收并在控制台显示的数据夏一鸣不知道是正确的数据,还是由于编码解码问题导致的乱码问题.此次Review要解决的问题即判断接收 ...

  9. JS高级-String-正则表达式:

    1. String: 由多个字符组成的字符只读数组 vs 数组: 相同: 1. 下标, 2. .length, 3. 遍历, 4. .slice 不同: 类型不同!  API不通用 API: 所有字符 ...

  10. Java:斐波那契数列

    斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10 ...