Java中的类的关系
来源:互联网 发布:高级数据安全工程师 编辑:程序博客网 时间:2024/06/09 15:35
一、依赖关系
依赖关系(Dependence):假设A类的变化引起了B类的变化,则B类依赖于A类。
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
public class Driver //B类{ public void drive(Car car) { car.move(); } } public class Car //A类{ public void move() { ...... } }
依赖关系有如下三种情况:
- A类是B类中的(某中方法的)局部变量;
- A类是B类方法当中的一个参数;
- A类向B类发送消息,从而影响B类发生变化;
二、关联关系
关联关系(Association):是一种结构化关系,用于表示一类对象与另一类对象之间有联系,通常将一个类的对象作为另一个类的属性。
1、双向关联:默认情况下,关联是双向的。
public class Customer { private Product[] products; …… } public class Product { private Customer customer; …… }
2、单向关联:类的关联关系也可以是单向的。
public class Customer { private Address address; …… } public class Address { …… }
三、聚合关系
聚合关系(Aggregation):表示的是整体和部分的关系,整体与部分可以分开。
通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。
在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
public class Car { private Engine engine; public Car(Engine engine) { this.engine = engine; } public void setEngine(Engine engine) { this.engine = engine; } …… } public class Engine { …… }
四、组合关系
组合关系(Composition):也是整体与部分的关系,但是整体与部分不可以分开。
组合关系也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有同生共死的关系。
在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。
public class Head { private Mouth mouth; public Head() { mouth = new Mouth(); } …… } public class Mouth { …… }
五、泛化关系(Generalization)
泛化关系也就是继承关系,也称为“is-a-kind-of”关系或者“is a”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
在代码实现时,使用面向对象的继承机制来实现泛化关系。
六、实现关系(Realization)
接口和类之间还存在一种实现关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。
- Java中的类的关系
- java中的面向对象和类之间的关系
- Java中的继承:父类和子类的关系
- java中的hashCode()和equals()的关系
- Java中的继承关系的加载顺序
- 【奔跑的菜鸟】Java中的继承关系
- java中的hashCode()和equals()的关系
- Java 类的关系
- JAVA IO包中的类层次关系
- Java类继承关系中的初始化顺序
- java中的继承关系
- java中的继承关系
- java中的组合关系
- oracle中的数据类型和java中的数据类型的对应关系
- Java 中的包, 公共类与Java源码文件的关系介绍
- java中的代码块和java的继承关系
- Java类和接口的继承和实现关系(Class和Interface中的extends和implements关系)
- JAVA类之间的关系
- 进程控制编程
- bnuoj 49100超级线段树并查集
- 【MyBatis学习05】传入参数parameterType
- 1095
- 移植Linux-3.0.8到s5pv210
- Java中的类的关系
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- 封装,面向对象设计编程思想
- I
- 兄弟选择器和相邻选择器按正序控制兄弟元素和相邻元素的样式
- 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于CSDN博客定期更新排名)
- 1096
- discuz伪静态的小问题及修正,不知道您发现了没
- ARM_S5PV210学习之手动安装交叉编译工具链