趣谈Java之 |
您所在的位置:网站首页 › 种间关系有哪几类 › 趣谈Java之 |
文章目录
前言
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 |