趣谈Java之

您所在的位置:网站首页 种间关系有哪几类 趣谈Java之

趣谈Java之

2024-07-04 04:56| 来源: 网络整理| 查看: 265

文章目录 前言 1 简单了解 UML 中的类图结构 2 UML 中类之间的关系概述 3 类(对象)之间的关系详解 3.1 一般—>特殊关系 3.1.1 继承关系(generalization) 3.1.2 实现关系(generalization) 3.2 整体—>部分关系 3.2.1 关联关系(association) 3.2.2 依赖关系(dependency) 3.2.3 聚合关系(Aggregation) 3.2.4 组合关系(Composition) 4 需要注意的地方 写在最后

阅读文本大概需要 6.66 分钟。

前言

大家好,这是首发于公众号「蜗牛永动机」的趣谈 Java 系列教程。学习一门语言最好的办法,就是教会别人。在这个公众号,我会从最基础的教程开始写起,一方面是为了更好地复习巩固 Java 基础,另一方面也是慢慢进阶的过程。喜欢的朋友请点关注,每天一小步,一年后就是一大步。废话不多说,开始今天的文章。

1 简单了解 UML 中的类图结构

在学习类(对象)之间的关系之前,首先来了解一下 UML 中一个类是如何表示的。在 UML 中,一个类主要由三个部分组成,具体如下:

类名

属性(成员变量)的名称和类型

方法的名称、返回类型和参数

比如,我们可以看到一个 Person 类和一个 Employee 类的类图表示如下:

在这里插入图片描述

有些童鞋可能看得很仔细,应该注意到了上图中的属性或方法的前面标有 - 或 + 号。这里也顺便提一下,这几种符号表示的是属性和方法的可见性。通常,在 UML 中表示类图的时候,表示属性或方法可见性的符号主要有以下三种:

+ 表示 public - 表示 private # 表示 protected

比如,我们可以从上图中 Person 和 Employee 的类图中看出,Person 类有 3 个私有属性和 5 个公有方法,而 Employee 类则有 3 个私有方法和 6 个公有方法。

2 UML 中类之间的关系概述

类(对象)之间通常有两种主要的结构关系,一种是一般—>特殊关系,另一种是整体—>部分关系。从这两种类的结构关系中又可以细分出来很多种具体的类(对象)关系。

通常,一般—>特殊关系主要指的是一种 is a关系,其中最典型的代表就是泛化关系(继承关系)和实现关系。

继承关系(generalization)

实现关系(generalization)

整体—>部分关系则指的是一种 has a关系,这又怎么理解呢?因为这种结构就是典型的组装结构,也即典型的组合关系。通常,我们会在 Java 中的一个类中嵌入另一个类的对象来实现这种组合关系。整体—>部分关系通常包括以下几种类(对象)关系:

关联关系(association)

依赖关系(dependency)

聚合关系(Aggregation)

组合关系(Composition)

3 类(对象)之间的关系详解 3.1 一般—>特殊关系 3.1.1 继承关系(generalization)

在 Java 中通过关键字 extends 来表示继承关系。这里的 is a 关系要怎么理解呢?因为 Java 中子类继承自父类,子类是一种特殊的父类,所以简单粗暴地理解就是子类 is a 父类。具体到生活中的例子,比如人—>动物,这就是典型的一般—>特殊关系,人是一种动物这完全说得通,但是反过来说动物是一种人,这很显然就说不通了。

所以,不妨换个角度来理解,父类范围更大,而子类范围更小,也即父类指代的是更泛、更一般的概念,而子类则代表的是一种更特殊、更具体的特指。也就是说,这是完全符合一般—>特殊关系的。再比如猫头鹰是一种鸟,但不能反过来说鸟是一种猫头鹰,这很显然说不通,完全一样的道理。所以,我们可以得出这样的结论:

继承关系封装了这样一种逻辑:「XX是一种XX」,只要这种关系能说得通,就可以考虑用继承关系来封装它。

继承关系在 UML 类图中用 实线 + 实心箭头 表示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3