Java程序设计中关联与继承的比较

  • 格式:pdf
  • 大小:109.48 KB
  • 文档页数:1

0 引言 通 过上面 的例子可以看出继承是对现有类 的类型来创建新类。 J v 功 能 齐 全 的通 用 程 序 设 计 语 言 , 以 开 发 可 靠 的 、 求 aa是 可 要 无需改变现有类的形式, 采用现有类的形式并在其中添加新 的内容。 严 格 的应 用 程 序 。 它 不仅 仅 用 W e b程 序 设 计 而 且 用 于 服 务 器 和 移 对于继承来说 , 子类需要知道其上层父类的实现 , 同时父类的改变直 动 设 备 上开 发跨 平 台 的 独立 应 用 程 序 ,并 且 其 是 一 门完 全 面 向对 象 接影响到其下层 子类。子类是严 重依赖其父类的。从实践经历来说 , 的程 序 设计 语 言 。 a a的流 行 和 广 泛 的应 用 , 要 归功 于 他 的特 点 , Jv 主 当子类很多而且子类之间的功能对于有些子类是一样的 ,对于有些 正 如 Jv a a官网上 说的 ,a a是简 单的、 向对象 的、 Jv 面 分布 的、 释 解 子 类又是不一样 的, 到这种情况 , 碰 就需要非常小心 , 根据实 际情况 的、 健壮 的、 安全的、 结构中立的、 可移植 的、 高性能 的、 多线程的以及 恰 当运用设计模 式进行抽象分解 , 而设计不好父类往往非常臃肿 , 给 动态的。 然 Jv 虽 a a的特 点 比较 多 , 是 Jv 但 a a程 序开 发 过 程 中 主 要还 以后 的 维 护 带来 困难 。 是 围 绕着 类 和 对 象进 行 的 ,而 在定 义 程 序 结 构 的过 程 需 要 表 述 类 的 3 关 联 和继 承 之 间的 抉择 关 系 。 类 的 关 系没 有 定 义和 处理 好 , 会 影 响 整个 程 序 的质 量 和 不 而 就 关联和继承都允许在新 的类 中放置子对象 ,关联是显示地这样 安 全 因 素。 么 类 的 关系 有 几 种 呢? 常 可 分 为 关联 和 继 承 两 种。 哪 通 哪 做 , 承是 隐 式 的。 关联是 在 新类 中嵌 入某 个对 象 , 其 实现 所需 要 而继 让 在程 序 中怎 么样 利 用 好 这 两 种 关 系呢 ? 何 使 程序 变得 更 完 美 呢? 如 这 的功能 , 但新类的用户看到的只是为新类所定义的接 口, 而非所嵌入对 样就需要我们 掌握这两个概念和理解如何来使用它们。 象的接 口。 而在继承的时候 , 使用现有类 , 并开发一个新的类, 这就是将 1关 联 个类进行特殊化的过程。利用继承性共享类的实现似乎是简单的问 关 联 是 类 之 间最 直 接 的 一种 关 系 ,当某 个 类 知 道 另 外 一个 类 时 题。 如果两个或更多的类需要使用同样 的方法和 变量, 以创建一个父 可 使 用 关联 。关 联 通 常称 为 H s a的关 系 , 就 是 说 一 个 类 拥 有 或 使 a— 也 类包含 这 些共 同之处 , 根据 继承 访 问 它们。 并且 这样 可 以不用 重复 声 明 用 另 一 个 类 的对 象 的 引 用。 个 类通 过 声 明 可 以建 立 关 联 关 系 , 一 同时 变量和 方法 , 需编 写 和测 试 一 次。 继承 并 不 是 唯一 的 共 享代 码 的 方 只 这 个 类 对 象通 过 引 用其 它对 象 实 现 这种 关 联 关 系 。举 例 说 明 : 式 , 也 可 以实 现代 码复 用 , 关联 我们 可 以将共 享 方法和 变量 放到 另 一个 p bi ls o { u l ca s d g c 类 中 r 过 一 个 实例 变量 引到 目标 类 中作 为一个 对 象进 行访 问。 可见 , i 匝 pia e Stig d g c n m e r t r o Nik a v n ; 这两种 方法都可以实现代码复用, 那么在遇到代码复用的时候 , 我们如 p i t r y it d gFr t a r a e Ara Ls o i n me v s ; 何 来 判断 采用 哪种 方 法呢 ? 如果 我们 只 需要 用到 某 个类 , 需要 拥有 而不 ) 与这个类相同的公用接 口, 则不采用继承。 相反 , 采用关联。 因为新的子 在该 类 中我们 可 以看 出 D g类 中 有 两个 对 象 引用 分别 是 d g 类将会 继 承一 些并 不 需要 的公 有 方法 , o o— 因些 使用 关联 。 也就 是说 公 共接 Nc n me和 d g i ta ; 表 示 两个 成 员 变 量。 这 两 个成 员 变 口没有 被 共享 , 使用 关联 。 虽然 关联相 对 来说 比较 简单 , 需 考 ika o Fr n me分别 s ‘ 我们 但还 量描述了对狗的名字的抽象。用户在使用 d g类的时候 , o 不必关心类 虑对象共享之间的因果关系和可能性。 关联表示一种归属权 , 也就是说 内部 的引用 对 象或 者 它们 的类 型 , 关 心由 d g类 提供 的公 有方 法就 个对象被另一个对象所控制, 只 o 某个对象只能由它的所有者进行修改。 可 以实 现调 用 的 目的 , 同时 用 户不 用去 了解 类 内部 是 如何 实现 的 。关 关联 的 功 能是所 引 用的 对 象可 以被一 些其 他对 象 使用 和共 享。 一般 来 联 可 以是 一对 一 的 , 可以 是一 对 多 的或 者 多对 多 的 。 由于 上面 的例 说, 也 继承的代码执行效率要高于关联。 因为继承是在静态编译时就 已经 子 中 Sr g和 A ryi 是 系统 定 义 的类 , 以看 上去 不 明显 。关联 主 决定了, tn i r lt a s 所 而关联是在运行时通过动态引用决定的。 当需要复用父类的某 要 目的就 是代 码 复用 , 过 新 的类产 生 现 有 类 的对 象 。 由于新 的类 是 些功能, 通 但如果继承下来的实现又不适合解决新的问题 , 则父类必须重 由现 有 的类 的对 象组 成 的 , 这种 方 法称 为关 联 。举 例 说 明 : 写或 被其 他更 适合 的类替 换 。这种 依 赖关 系 限制 了灵 活性 并最 终 限制
关键词 : 联 关 继承 Jv aa
S s e .u .r t (; y t m o tp i l i) n n )

ca s o rGa e e t n s Ga e ls B ad m x e d m (
B ad meiti o rGa ( ) n (
S s e .u .r t (; y t m o tp i l i} n n ) )
Jv a a程序 设计 中关联 与继承 的比较
汤德 怀 ( 城师范学院) 白
摘要 :a a是一门面向对象程序设计语言 , Jv 由许多类构成 , 那么类之 ห้องสมุดไป่ตู้ 的关系如何来进行处理 就变得 至关重 要。J v a a中的关联和继承是其 比较重 要的两个概念。 它们 之间存在着很多相似性 , 但是又有本质的区别。 对于初学 的学生而言 , 在使用 时很难界定到底采 用这二种机制的哪一种。本文从格式 和设计理念上分别分析这二种概念的相 同点和相异处。