00000008.htm
来自「水木清华BBS」· HTM 代码 · 共 287 行 · 第 1/2 页
HTM
287 行
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: FrankCH (小花花), 信区: Java <BR>标 题: Java教程(九) <BR>发信站: BBS 水木清华站 (Sun Jul 27 12:19:44 1997) <BR> <BR> <BR>JAVA程序设计语言讲座(第11讲) <BR> <BR> <BR> <BR> 郁欣 孙元 王曦东 王克宏 <BR> <BR> <BR> <BR> 第 一 部 分 Java入 门 <BR> <BR> 第 六 章 对 象 、 类 、 包 和 接 口 <BR> <BR> 6.2.6 构 造 方 法 <BR> <BR> 构 造 方 法 是 一 种 特 殊 的 方 法 。 Java中 的 每 个 类 都 有 构 造 方 法 ,用 来 初 始 化 该 类 的 一 个 <BR>新 的 对 象 。 构 造 方 法 具 有 和 类 名 相 同 的 名 称 ,而 且 不 返 回 任 何 据 类 型 ,在 构 造 方 法 的 实 <BR>现 中 ,也 可 以 进 行 方 法 重 写 。 <BR> <BR> 例6.5 <BR> class point { <BR> int x,y; <BR> point (){ <BR> x=0; y=0; <BR> } <BR> point (int x, int y){ <BR> this.x=x; this.y=y; <BR> } <BR> } <BR> <BR> <BR> 上 例 中 ,我 们 对 类 Point实 现 了 两 个 构 造 方 法 ,方 法 名 均 为 Poin t <BR>,与 类 名 相 同 。 而 且 我 们 使 <BR>用 了 方 法 重 写 ,根 据 不 同 的 参 数 分 别 对 点 的 x、 y坐 标 赋 与 不 同 的 <BR> 回 忆 在 例 6.2中 ,我 们 曾 用 init()方 法 对 点 的 x、 y坐 标 进 行 初 始 <BR>? 。 二 者 完 成 相 同 的 功 能 <BR>,那 么 用 构 造 方 法 的 好 处 在 哪 里 呢 ? <BR> <BR> 当 用 运 算 符 new为 一 个 对 象 分 配 内 存 时 ,要 调 用 对 象 的 构 造 方 <BR>法 ,而 当 创 建 一 个 对 象 时 <BR>,必 须 用 new为 它 分 配 内 存 。 因 此 用 构 造 方 法 进 行 初 始 化 避 免 了 在 <BR> 生 成 对 象 后 每 次 都 要 调 <BR>用 对 象 的 初 始 化 方 法 。 如 果 没 有 实 现 类 的 构 造 方 法 ,则 Java运 行 <BR> <BR> 另 外 ,构 造 方 法 只 能 由 new运 算 符 调 用 。 我 们 将 在 § 6.3中 进 行 <BR>详 细 介 绍 。 对 构 造 方 法 同 <BR> <BR> 6.2.7 finalize()方 法 <BR> <BR> 在 对 对 象 进 行 垃 圾 收 集 前 ,Java运 行 时 系 统 回 自 动 调 用 对 象 的 <BR> finalize()方 法 来 释 放 系 统 资 <BR> <BR> protected void finalize() throws throwable <BR> <BR> finalize()方 法 在 类 java.lang.Object中 实 现 。 如 果 要 在 一 个 所 定 义 <BR> 的 类 中 实 现 该 方 法 以 释 放 <BR>该 类 所 占 用 的 资 源 (即 要 重 载 父 类 的 finalize()方 法 ),则 在 对 该 类 所 <BR> 使 用 的 资 源 进 行 翻 译 后 ,一 <BR>般 要 调 用 父 类 的 finalize()方 法 以 清 除 对 象 使 用 的 所 有 资 源 ,包 括 <BR>? 于 继 承 关 系 而 获 得 的 资 源 <BR> <BR> …… // clean up code for this class <BR> super. finalize(); <BR> } <BR> <BR> <BR> <BR> <BR> <BR>将 在 § 6.4中 讲 述 ,对 类 <BR>java.lang.Ob-ject,我 们 也 将 在 § 6.4中 讲 述 。 <BR> <BR> <BR> <BR>递 <BR> 来 进 行 交 互 (消 息 传 递 即 <BR>激 活 指 定 的 某 个 对 象 的 方 法 以 改 变 其 状 态 或 让 它 产 生 一 定 的 行 <BR>为 ),最 终 完 成 复 杂 的 任 务 <BR> <BR> <BR>我 们 分 别 讲 述 : <BR> <BR> <BR> 对 象 的 生 成 包 括 声 明 、 实 例 化 和 初 始 化 三 方 面 的 内 容 。 通 <BR>? 的 格 式 为 : <BR> <BR> <BR> <BR> 1. type objectName; 声 明 了 一 个 类 型 为 type的 对 象 。 其 中 type是 组 <BR>合 类 型 (包 括 类 和 接 口 )。 <BR>对 象 的 声 明 并 不 为 对 象 分 配 内 存 空 间 。 <BR> <BR> <BR>对 象 的 构 造 方 法 ,返 回 对 <BR>该 对 象 的 一 个 引 用 (即 该 对 象 所 在 的 内 存 地 址 )。 用 new可 以 为 一 ? 类 实 例 化 多 个 不 同 的 对 <BR>象 。 这 些 对 象 分 别 占 用 不 同 的 内 存 空 间 ,因 此 改 变 其 中 一 个 对 象 <BR> 的 状 态 不 会 影 响 其 它 对 象 <BR> <BR> 3. 生 成 对 象 的 最 后 一 步 是 执 行 构 造 方 法 ,进 行 初 始 化 。 由 于 <BR>对 构 造 方 法 可 以 进 行 重 写 <BR>,所 以 通 过 给 出 不 同 个 数 或 类 型 的 参 数 会 分 别 调 用 不 同 的 构 造 方 <BR> 以 例 6.5中 所 定 义 的 类 Point 为 例 ,我 们 生 成 类 Point的 对 象 : <BR> <BR> Point p1 = new Point(); <BR> <BR> Point p2 = new Point(5,10); <BR> <BR> 这 里 ,我 们 为 类 Point生 成 了 两 个 对 象 p1、 p2,它 们 分 别 调 用 不 同 <BR> 的 构 造 方 法 ,p1调 用 缺 省 <BR>的 构 造 方 法 (即 没 有 参 数 ),p2则 调 用 带 参 数 的 构 造 方 法 。 p1、 p2 分 <BR> <BR> 虽 然 new运 算 符 返 回 对 一 个 对 象 的 引 用 ,但 与 C、 C++中 的 指 针 不 <BR> 同 ,对 象 的 引 用 是 指 向 <BR>一 个 中 间 的 数 据 结 构 ,它 存 储 有 关 数 据 类 型 的 信 息 以 及 当 前 对 象 <BR> 所 在 的 堆 的 地 址 ,而 对 于 <BR>对 象 所 在 的 实 际 的 内 存 地 址 是 不 可 操 作 的 ,这 就 保 证 了 安 全 性 6.3.2 对 象 的 使 用 <BR> <BR> 对 象 的 使 用 包 括 引 用 对 象 的 成 员 变 量 和 方 法 ,通 过 运 算 符 · <BR>可 以 实 现 对 变 量 的 访 问 和 <BR>方 法 的 调 用 ,变 量 和 方 法 可 以 通 过 设 定 一 定 的 访 问 权 限 (见 § 6.6) <BR> <BR> 我 们 先 定 义 一 个 类 Point,它 在 例 6.5的 定 义 中 添 加 了 一 些 内 容 <BR>? <BR> <BR> 例6.6 <BR> class Point{ <BR> int x,y; <BR> String name = "a point"; <BR> Point(){ <BR> x = 0; <BR>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?