|
6.1.2 继 承
通 过 对 象 、 类 ,我 们 实 现 了 封 装 ,通 过 子 类 我 们 可 以 实 现 继 承 。
对 于 上 例 来 说 ,公 共 汽 车 、 出 租 车 、 货 车 等 都 是 汽 车 ,但 它 们 是 不 同 的 汽 车 ,除 了 具 有
汽 车 的 共 性 外 ,它 们 还 具 有 自 己 的 特 点 (如 不 同 的 操 作 方 法 ,不 同 的 用 途 等 )。 这 时 我 们 可 以
把 它 们 作 为 汽 车 的 子 类 来 实 现 ,它 们 继 承 父 类 (汽 车 )的 所 有 状 态 和 行 为 ,同 时 增 加 自 己 的 状
态 和 行 为 。 通 过 父 类 和 子 类 ,我 们 实 现 了 类 的 的 层 次 ,可 以 从 最 一 般 的 类 开 始 ,逐 步 特 殊 化
,定 义 一 系 列 的 子 类 。 同 时 ,通 过 继 承 也 实 现 了 代 码 的 复 用 , 使 程 序 的 复 杂 性 线 性 地 增 长 ,而
不 是 呈 几 何 级 数 增 长 。
在 C++中 支 持 多 重 继 承 ,即 一 个 类 可 以 继 承 多 个 父 类 ,这 使 得 对 象 的 实 现 变 得 非 常 复 杂
且 不 可 预 料 (设 想 多 个 父 类 拥 有 某 些 相 同 的 变 量 和 方 法 )。 Java则 只 支 持 单 一 继 承 ,大 大 降 低
了 复 杂 度 。 在 Java中 通 过 接 口 可 以 实 现 多 重 继 承 ,但 接 口 的 概 念 更 简 单 ,使 用 更 方 便 ,而 且 不
仅 仅 限 于 继 承 ,它 使 多 个 不 相 关 的 类 可 以 具 有 相 同 的 方 法 。
6.1.3 多 态
Java通 过 方 法 重 写 和 方 法 重 载 来 实 现 多 态 。
通 过 方 法 重 写 ,一 个 类 中 可 以 有 多 个 具 有 相 同 名 字 的 方 法 , 由 传 递 给 它 们 的 不 同 个 数
和 类 型 的 参 数 来 决 定 使 用 哪 种 方 法 ,这 就 是 多 态 。 例 如 ,对 于 一 个 作 图 的 类 ,它 有 一 个
draw()方 法 用 来 画 图 或 输 出 文 字 ,我 们 可 以 传 递 给 它 一 个 字 符 串 、 一 个 矩 形 、 一 个 圆 形 ,甚
至 还 可 以 再 指 定 作 图 的 初 始 位 置 、 图 形 的 颜 色 等 ,对 于 每 一 种 实 现 ,只 需 实 现 一 个 新 的
draw()方 法 即 可 ,而 不 需 要 新 起 一 个 名 字 , 这 样 大 大 简 化 了 方 法 的 实 现 和 调 用 ,程 序 员 和 用 户
都 不 需 要 记 住 很 多 的 方 法 名 ,只 需 要 传 入 相 应 的 参 数 即 可 。
通 过 方 法 重 载 ,子 类 可 以 重 新 实 现 父 类 的 某 些 方 法 ,使 其 具 有 自 己 的 特 征 。 例 如 对 于
汽 车 类 的 加 速 方 法 ,其 子 类 (如 赛 车 )中 可 能 增 加 了 一 些 新 的 部 件 来 改 善 提 高 加 速 性 能 ,这 时
可 以 在 赛 车 类 中 重 载 父 类 的 加 速 方 法 。 重 载 隐 藏 了 父 类 的 方 法 ,使 子 类 拥 有 自 己 具 体 实 现
,更 进 一 步 表 明 了 与 父 类 相 比 ,子 类 所 具 有 的 特 殊 性 。
本 节 中 ,我 们 对 面 向 对 象 程 序 设 计 的 一 些 基 本 内 容 作 了 讲 解 ,下 面 我 们 就 分 别 讲 述
Java是 如 何 实 现 这 些 内 容 的 。 |
|