Java关联关系、依赖关系
关联关系
概念:对象和对象之间的连接
定义: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方法中使用
类与类之间的关系总共分四种:另外还有继承关系(链接:下一章总结)、实现关系(本质也是继承关系)
代码示例
package summary3; import java.util.List; //一对一关联:一个学生,只能在一个班级里学习
class Classes1 //创建班级类
{
Student1 S; //这是声明一个学生类
}
class Student1 //创建学生类
{ } //一对多关联:一个学生,可以参加多个班级学习
//使用集合解决一对多关联
class Classes2 //创建班级类
{ }
class Student2 //创建学生类
{
List Classes2; //创建List集合
} //使用数组解决一对多关联
class Classes3 //创建班级类
{ }
class Student3 //创建学生类
{
Classes3[] Classess; //创建数组
} //如果两个互相关联的类中有整体和部分的关系,关联关系分为: 聚合和组合,主要区别在于生命周期不同
//聚合
class Team1 //创建队员类
{
Player1 player; //声明运动员类
}
class Player1 //创建运动员类
{
//创建Team1对象时Player1对象可以不创建,当Player1对象销毁时Team1对象也销毁
} //组合
class Team2 //创建队员类
{
Player2 p = new Player2 (); //创建运动员类
}
class Player2 //声明运动员类
{
//创建Team2对象的时Player2类同样创建,当 Team2对象销毁时,Player2对象也销毁
} public class HasRelation //关联关系:has
{
public static void main(String[] args)
{
Classes1 C1 = new Classes1(); //一对一关联
Classes2 C2 = new Classes2(); //一对多关联:集合
Classes3 C3 = new Classes3(); //一对多关联:数组
Team1 T1 = new Team1(); //关联关系:聚合
Team2 T2 = new Team2(); //关联关系:组合
}
}
package summary3; class Car //创建一个汽车类
{
void run(Petrol petrol)
{
System.out.println("使用:" + petrol.type + ", 汽车跑了起来~");
}
}
class Petrol //创建汽油类
{
String type; //声明汽油型号
Petrol(String type)
{
this.type = type;
}
} public class UseRelation //依赖关系:汽车启动需要使用汽油
{
public static void main(String[] args)
{
Car car = new Car();
car.run(new Petrol("93号汽油"));
}
}
Java关联关系、依赖关系的更多相关文章
- 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)
类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...
- AJPFX关于java的依赖 关联 聚合的关系解释
依赖: 两个相对独立的系统,当一个系统要构筑另一个系统的实例,或者依赖另一的服务时,这两个就是依赖关系.比如自行车和打气筒之间就是依赖关系.代码表现形式如下: public class A{ ...
- 【java】javac编译多个有依赖关系的java文件为class文件
历史文章: [jar]JDK将单个的java文件打包为jar包,并引用到项目中使用[MD5加密] [java]javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序[解 ...
- java中类的关系的总结
类和类之间存在多种关系,而这种关系在我们的代码中司空见惯,有时多种类关系很难区分 (由于水平有限,没有画出类的关系图,关系图可以参考参考链接) 继承关系 继承是指一个子类(子接口)继承父类(父接口)然 ...
- [UML]UML系列——类图class的依赖关系
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列—— ...
- Spring 3.x jar 包详解 与 依赖关系
以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...
- Spring 3.x jar 包详解 与 依赖关系(转)
以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...
- Spring依赖关系
在Spring中,各个模块的依赖关系通过简单的IoC配置文件进行描述,使这些外部化的信息集中并且明了,我们在使用其他组件服务时,只需要去配置文件中了解和配置这些依赖关系即可,也就是说这里关心的是接口, ...
- Gradle用户指南(章8:依赖关系管理基础)
章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...
随机推荐
- python 虚拟环境操作 virtualenv +virtualenvwrapper
Window 下创建python的虚拟环境 下载工具 pip install virtualenv 创建虚拟环境目录 # 注意此命令创建的虚拟环境目录是在当前目录下 virtualenv testen ...
- c#多线程下的进程同步SignalAndWait 使用简单说明
解释:向一个 WaitHandle 发出信号并等待另一个进入信号. 总体概述: .NET Framework中提供一些类用于手动进行线程间的访问同步.这些类主要分为3大类别(但正如下文中会看到的这些类 ...
- mac/linux 修改vim显示信息
转自:http://www.cnblogs.com/yjmyzz/p/4019783.html 步骤1: cp /usr/share/vim/vimrc ~/.vimrc 先复制一份vim配置模板到个 ...
- iOS通过URL构建UIImage
很多时候我们只能得到一个URL,然后需要构建一个UIImage. 通常情况下,我们一般都是通过SDWebImage来直接构建UIImageVIew的image,如何用URL直接构建UIImage呢? ...
- Luogu2149 [SDOI2009]Elaxia的路线-最短路+拓扑排序
Solution 另外$ m <=5e5$. 两条最短路的 最长公共路径 一定是若干条连续的边, 并且满足拓扑序. 于是我们分别 正向 和反向走第二条路径,若该条边同时是两条最短路径上的边, 则 ...
- sscanf 解析字符串
test.txt中内容如下所示: eth0||192.168.0.2-192.168.0.150 eth2||192.168.0.2-192.168.0.150 想要将其中的ip地址等解析出来: #i ...
- memcache的add和set区别
add可以做memcache锁 使用场景:用户兑换商品,在网络不好的情况下,点击多次,set会将多次提交全纪录下来,add只会记录一次
- openssl RSA加密方法初识
作为非对称加密算法,有两对密钥 一般用法 加密结果=RSA_EN(数据,公钥); 解密结果=RSA_DE(数据,私钥); RSA填充 (RSA_public_encrypt和RSA_private_d ...
- Django之admin管理数据库,cookie验证及分页设置
一.admin管理数据库 1)models.py创建class类表 class Book(models.Model): name=models.CharField(max_length=) price ...
- kbmmw 中简单返回 extjs 数据JSON
以前,我们通过自己写json 来返回数据表的内容.在delphi 10.2.2中,官方自带了一个FDBatchMoveJSONWriter1 来直接处理数据库内容.把结果推送到浏览器客户端. 今天我们 ...