文章目录
目录
前言
平时经常看到类之间的依赖、泛化、实现、关联、聚合、组合关系,却不认识,今天带大家来彻底熟悉他们的概念。
一、类之间有什么关系?
类之间存在依赖、泛化、实现、关联、聚合、组合等关系。UML类图是描述类与类之间的关系的,学习这些关系有助于我们看懂和会使用类图。
二、具体介绍
1.依赖关系
依靠别人或事物而不能自立或自给称为依赖,把这句话带入到类的关系中去理解,就是指一个类中使用了其他的类,包括但不限于作为成员变量、方法返回类型、参数类型以及在方法中引用。这样他们就产生了依赖关系,如果这些被依赖的类不存在,在依赖的类中编译都会报错的。
代码如下(示例):
public class Main {
// 作为成员变量
private A a;
// 作为方法返回类型
public B useB(){
return new B();
}
// 作为参数
public void useC(C c){
}
// 在方法中使用
public void useD(){
D d = new D();
}
}
class A{
}
class B{
}
class C{
}
class D{
}
2.泛化关系
泛化是指由具体的、个别的扩大为一般的。泛化关系实际上就是继承关系,是依赖关系的特例。比如一个类的某个公有方法,如果该类没有子类,则该方法是个别的,如果存在子类,则方法可以被继承或者重写,就扩大为一般的方法。
代码如下(示例):
public class Main {
// 基类方法
public void own(){
System.out.println("this is Main's own method");
}
public static void main(String[] args) {
new SubClass().own();
}
}
class SubClass extends Main{
// 重写基类方法
@Override
public void own() {
// 拥有基类方法
super.own();
// 自定义功能
System.out.println("he is lie");
}
}
3.实现关系
所谓实现就是把抽象的内容具体化。就是指类实现接口,也是依赖关系的一种特例。
代码如下(示例):
// 实现接口
public class Main implements Demo{
// 实现接口方法
@Override
public void demo() {
}
}
interface Demo{
void demo();
}
4.关联关系
关联是指事物相互间产生的影响和牵连。关联关系存在单向关系(依赖)和双向关系称为关联的导航性。关联也是依赖的特例,单向关系其实就是依赖关系。关联的对象可以有0个至多个,称之为关联的多重性。
代码如下(示例):
// 单方面一对一关系(依赖)
public class Main{
private A a;
}
class A{
}
// 双方一对一关系
public class Main{
private A a;
}
class A{
private Main m;
}
5.聚合关系
聚合是指分散的聚集到一起。聚合是指整体与部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,具有关联关系的导航行与多重性。
代码如下(示例):
// 整体(关联关系单方面一对多关系)
public class Main{
//关联部分,部分被使用时才被初始化,表示可以被分离
private A a;
private B b;
public void setA(A a){
this.a = a;
}
public void setB(B b){
this.b = b;
}
}
// 部分
class A{
}
// 部分
class B{
}
6.组合关系
组合是指指由几个部分或个体.结合成的整体。在类的关系中也是指整体与部分的关系,但是整体与部分不能分开。
// 整体
public class Main{
//组合关系,不可分离,整体初始化时部分也被初始化,表示整体离不开部分
private A a = new A();
private B b = new B();
}
// 部分
class A{
}
// 部分
class B{
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了类之间的六种关系。并附示例代码更有助于大家理解。