动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

浅谈Java中类与类之间的关系

05-19 11:38 843浏览
举报 T字号
  • 大字
  • 中字
  • 小字

​我们都知道Java中有很多的类,那么不同种类的Java类之间有什么关系呢?本文我们就来探究一下Java中类与类之间的关系。

1.关联关系

单向关联:从一个类中可以访问另一个类的成员,有这个类的引用。

双向关联:两个类可以互相访问,互相有引用。

自身关联:本类中调用自身self or this.

多维关联:多个类互相之间有单向关联也有双向关联,还可以有自身关联,多个维度的关联。

一对多关联:一个类有多个类的引用。

多对多关联:多个类互相之间有单向关联也有双向关联。

当一个类的属性保存了对另一个类的一个实例的引用时,就产生了关联。

2.聚合关系

聚合关联是一种特殊的关联. 它表示类间的关系是整体与部分的关系. 简言之: 关联关系中的一个类描述了一个较大的事物, 它由较小的事物组成。

聚合关系中一个大类由多个小类组成,但是没有这个大类,这些小类可以再次聚合成另外一个大类而继续使用,这是与组合关系的区别。

聚合关系是关联关系的一种,是强的关联关系。

聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。

聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同 一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。

通俗的讲:“汽车”有一个引擎和四个轮胎,如果这个“汽车”毁了,它的引擎和 轮胎还可以安在别的汽车上。

3.泛化关系

在 UML 中, 泛化关系用来表示类与类, 接口与接口之间的继承关系。更准确的说是不仅有继承关系,还有类和接口的实现关系。

泛化关系包括继承关系和实现关系。

泛化就是从子类抽象出一个父类 ,包含了继承关系(由父类具体化一个子类)。 继承关系:

继承关系指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。

继承与泛化可以看作一个逆过程

实现关系:

public interface A {
// 声明一个接口(注意:接口不是类)
}
public class B implements A{
// 实现接口A
}

实现指的是一个类实现一个interface接口(可以是多个)的功能,在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。

4.组合关系

组合:组合关系了表示2着缺一不可,同时存在同时消失。常常会使用构造方法来达到初始化的目的,

整件拥有部件的生命周期, 所以整件删除时, 部件一定会跟着删除. 而且, 多个整件不可以同时共享同一个部件。

组合关系中一个大类由多个小类组成,没有这个大类,小类不能存在。

聚合关系是当描述一个大的事物时,大的事务可以包含小的事务,也可以不包含小的事物,比如图书馆和图书,而组合是一个大的事物的存在必须是由多个小的事务组成的,缺省了小的事务是不可以的。比如人与器官,人的器官可以移植,这是聚合关系;人与肢体,人没了,肢体便没有用了,这是组合关系。

组合关系是关联关系的一种,是比聚合关系还要强的关系。

它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。 通俗的讲:“人”有四个“肢体”,如果“人”死了,那么四个肢体也没有用处了。

5.依赖关系

依赖 : A 类 方法 中 的参数 包 含 了B 。

对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系。

一个类在某个时刻会用到另一个类,那么这两个类就是依赖关系。是一种短暂的关系。

依赖关系也是类与类之间的联结

依赖总是单向的。

依赖关系在代码中中体现为局部变量、方法的参数或者对静态方法的调用。

比如,人在出行的时候会依赖车的关系。

综上所述,在Java中,类与类关系的联系紧密度排行为: 实现 > 聚合 > 关联 > 依赖。想进一步了解这其中的顺序的排列的小伙伴可以到动力节点在线的免费视频课程学习更多的知识。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵652
程序员代码小兵652

113篇文章贡献392215字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消