《2023年JAVA基础知识点总结.pdf》由会员分享,可在线阅读,更多相关《2023年JAVA基础知识点总结.pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Cre a ted b y Alwen on 2023/5/1 4.j ava是 面 向 对 象 的 程 序 设 计 语 言;类 可 被 认 为 是 一 种 自 定 义 的 数 据 类 型,可 以 使 用 类 来 定 义 变 量,所 有 使 用 类 定 义 的 变 量 都 是 引 用 变 量,它 们 将 会 引 用 到 类 的 对 象。类 用 于 描 述 客 观 世 界 里 某 一 类 对 象 的 共 同 特 性,而 对 象 则 是 类 的 具 体 存 在,j a v a 程 序 使 用 类 的 构 造 器 来 创 建 该 类 的 对 象。Aja v a 也 支 持 面 向 对 象 的 三 大
2、 特 性:封 装、继 承、和 多 态。j a v a 提 供 了 private、p r otec t ed 和 public三 个 访 问 控 制 修 饰 符 来 实 现 良 好 的 封 装,提 供 了 ex t ends关 键 字 让 子 类 继 承 父 类,子 类 继 承 父 类 就 可 以 继 承 到 父 类 的 成 员 变 量 和 和 方 法,假 如 访 问 控 制 允 许,子 类 实 例 可 以 直 接 调 用 父 类 里 定 义 的 方 法。继 承 是 实 现 类 复 用 的 重 要 手 段。使 用 继 承 关 系 来 实 现 复 用 时,子 类 对 象 可 以 直 接 赋 给
3、父 类 变 量,这 个 变 量 具 有 多 态 性。面 向 对 象 的 程 序 设 计 过 程 中 有 两 个 重 要 的 概 念:类(Class)和 对 象(obj ect,也 被 称 为 实 例,in s tance)。类 可 以 包 含 三 种 最 常 见 的 成 员:构 造 器、成 员 变 量、和 方 法。A构 造 器 用 于 构 造 该 类 的 实 例,java语 言 通 过 new关 键 字 类 调 用 构 造 器,从 而 返 回 该 类 的 实 例。构 造 器 是 一 个 类 创 建 对 象 的 主 线 途 径,假 如 一 个 类 没 有 构 造 器,这 个 类 通 常 无 法
4、创 建 实 例。因 此 java语 言 提 供 了 一 个 功 能:假 如 程 序 员 没 有 为 一 个 类 编 写 构 造 器,则 系 统 会 为 该 类 提 供 一 个 默 认 的 构 造 器,这 个 构 造 器 总 是 没 有 参 数 的。一 旦 程 序 员 为 一 个 类 提 供 了 构 造 器,系 统 将 不 再 为 该 类 提 供 构 造 器。构 造 器 用 于 对 类 实 例 进 行 初 始 化 操 作,构 造 器 支 持 重 载,假 如 多 个 重 载 的 构 造 器 里 包 含 了 相 同 的 初 始 化 代 码,则 可 以 把 这 些 初 始 化 代 码 放 置 在 普
5、通 初 始 化 块 里 完 毕,初 始 化 块 总 在 构 造 器 执 行 之 前 被 调 用。静 态 初 始 化 块 代 码 用 于 初 始 化 类,在 类 初 始 化 阶 段 被 执 行。假 如 继 承 树 里 某 一 个 类 需 要 被 初 始 化 时,系 统 将 会 同 时 初 始 化 该 类 的 所 有 父 类。构 造 器 修 饰 符:可 以 是 public、pro t e c t ed、priva t e 其 中 之 一,或 者 省 略 构 造 器 名:构 造 器 名 必 须 和 类 名 相 同。注 意:构 造 器 既 不 能 定 义 返 回 值 类 型,也 不 能 使 用 v
6、o i d 声 明 构 造 器 没 有 返 回 值。假 如 为 构 造 器 定 义 了 返 回 值 类 型,或 使 用 v。id声 明 构 造 器 没 有 返 回 值,编 译 时 不 会 犯 错,但 j ava会 把 这 个 所 谓 的 构 造 器 当 成 方 法 来 解 决 它 就 不 再 是 构 造 器。岫 事 实 上 类 的 构 造 器 是 有 返 回 值 的,当 使 用 new关 键 字 来 调 用 构 造 器 时,构 造 器 返 回 该 类 的 实 例,可 以 把 这 个 类 的 实 例 当 成 构 造 器 的 返 回 值。因 此 构 造 器 的 返 回 值 类 型 总 是 当 前
7、类,无 须 定 义 返 回 值 类 型。不 要 在 构 造 器 里 显 式 的 使 用 retum来 返 回 当 前 类 的 对 象,由 于 构 造 器 的 返 回 值 是 隐 式 的。Ajava类 名 必 须 是 由 一 个 或 多 个 故 意 义 的 单 词 连 缀 而 成 的,每 个 单 词 首 字 母 大 写,其 他 字 母 所 有 小 写,单 词 与 单 词 之 间 不 要 使 用 任 何 分 隔 符。A成 员 变 量:A成 员 变 量 的 修 饰 符:p u b lic、pro t e c te d、p r iv a te、s t at i c fi n a 1前 三 个 只 能
8、出 现 一 个 再 和 后 面 的 修 饰 符 组 合 起 来 修 饰 成 员 变 量,也 可 省 略。成 员 变 量:由 一 个 或 者 多 个 故 意 义 的 单 词 连 缀 而 成,第 一 个 单 词 首 字 母 小 写,后 面 每 个 单 词 首 字 母 大 写,其 他 字 母 所 有 小 写,单 词 与 单 词 之 间 不 要 使 用 任 何 分 隔 符。类 型:可 以 是 j a v a 语 言 允 许 的 任 何 数 据 类 型,涉 及 基 本 类 型 和 引 用 类 型。成 员 方 法:方 法 修 饰 符:p u b 1 i c、pr o tected,priv a t e、s
9、tatic f i n a l、a b s tr a c t,前 三 个 只 能 出 现 一 个,s t a tic和 f i n a l 最 多 只 能 出 现 其 中 的 一 个,和 a b s t r a c t组 合 起 来 使 用。也 可 省 略。人 返 回 值 类 型:可 以 是 j a v a 语 言 的 允 许 的 任 何 数 据 类 型,涉 及 基 本 类 型 和 引 用 类 型。A方 法 名:和 成 员 变 量 的 方 法 命 名 规 则 相 同,通 常 建 议 方 法 名 以 英 文 动 词 开 头。方 法 体 里 多 条 可 执 行 语 句 之 间 有 严 格 的 执
10、行 顺 序,排 在 方 法 体 前 面 的 语 句 总 先 执 行,排 在 方 法 体 后 面 的 语 句 总 是 后 执 行。As t a t i c是 一 个 特 殊 的 关 键 字,它 可 用 于 修 饰 方 法、成 员 变 量 等 成 员。s t a t i c修 饰 的 成 员 表 白 它 属 于 这 个 类 自 身,而 不 属 于 该 类 的 单 个 实 例,因 此 通 过 把 s t a t i c 修 饰 的 成 员 变 量 和 方 法 被 称 为 类 变 量、类 方 法(静 态 成 员 变 量,静 态 成 员 方 法);不 使 用 s t at i c 修 饰 的 成 员 变
11、 量 和 方 法 称 为 实 例 变 量 和 实 例 方 法(非 静 态 成 员 变 量,非 静 态 成 员 方 法)。静 态 成 员 不 能 直 接 访 问 非 静 态 成 员。A s t a ti c的 真 正 作 用 就 是 用 于 区 提 成 员 变 量、方 法、内 部 类、初 始 化 块,这 四 种 成 员 到 底 属 于 类 自 身 还 是 属 于 实 例。有 s t a t i c修 饰 的 成 员 属 于 类 自 身,没 有 类 修 饰 的 成 员 属 于 该 类 的 实 例。j av a 类 大 体 有 如 下 作 用:定 义 变 量 始 U 建 对 象 A 调 用 类 的
12、类 方 法 或 访 问 类 的 类 变 量。定 义 一 个 类 就 是 为 了 反 复 创 建 该 类 的 实 例,同 一 个 类 的 多 个 实 例 具 有 相 同 的 特 性,而 类 则 是 定 义 了 多 个 实 例 的 共 同 特 性。类 里 定 义 的 方 法 和 成 员 变 量 都 可 以 通 过 类 或 实 例 来 调 用。St a t i c 修 饰 的 方 法 和 成 员 变 量,既 可 通 过 类 来 调 用,也 可 通 过 实 例 来 调 用;没 有 使 用 st a t i c 修 饰 的 普 通 方 法 成 员 变 量,只 可 通 过 实 例 来 调 用。P e r
13、s o n p=new P e r s on();这 行 代 码 创 建 了 一 个 P e r son实 例,也 被 称 为 P e rs o n 对 象,这 个 Pers o n 对 象 被 赋 给 p 变 量。在 这 行 代 码 中 事 实 上 产 生 了 两 个 东 西,一 个 是 p 变 量,一 个 是 P e r s o n 对 象。P 引 用 变 量 自 身 只 存储 了 一 个 地 址 值,并 未 包 含 任 何 实 际 数 据,但 它 指 向 实 际 的 Person对 象。Pers o n 对 象 由 多 块 内 存 组 成,不 同 内 存 块 分 别 存 储 了 P e
14、r s o n 对 象 的 不 同 成 员 变 量。类 是 一 种 引 用 数 据 类 型,因 此 程 序 中 定 义 的 Person类 型 的 变 量 事 实 上 是 一 个 引 用,它 被 存 放 在 栈 内 存 里,指 向 实 际 的 Per s o n 对 象;而 真 正 的 Person对 象 则 存 放 在 堆 内 存 中。当 一 个 对 象 被 创 建 成 功 以 后,这 个 对 象 将 保 存 在 堆 内 存 中,jav a 程 序 不 允 许 直 接 访 问 堆 内 存 中 的 对 象,只 能 通 过 该 对 象 的 引 用 操 作 该 对 象。堆 内 存 里 的 对 象
15、可 以 有 多 个 引 用,即 多 个 引 用 变 量 指 向 同 一 个 对 象。假 如 堆 内 存 里 的 对 象 没 有 任 何 变 量 指 向 该 对 象,那 么 程 序 将 无 法 再 访 问 该 对 象,这 个 对 象 也 就 变 成 了 垃 圾,j a v a垃 圾 回 收 机 制 将 回 收 该 对 象,释 放 该 对 象 所 占 的 内 存 区。对 象 的 th i s 引 用 Java提 供 了 一 个 this关 键 字,this关 键 字 总 是 指 向 调 用 该 方 法 的 对 象。This作 为 对 象 的 默 认 引 用 有 两 种 情 形:构 造 器 中 引
16、用 该 构 造 器 正 在 初 始 化 的 对 象;在 方 法 中 引 用 调 用 该 方 法 的 对 象。T h is关 键 字 最 大 的 作 用 就 是 让 类 中 一 个 方 法,访 问 该 类 里 的 另 一 个 方 法 或 者 实 例 变 量。Java允 许 对 象 的 一 个 成 员 直 接 调 用 另 一 个 成 员,可 以 省 略 th i s 前 缀。假 如 在 stati c修 饰 的 方 法 中 使 用 this关 键 字,则 这 个 关 键 字 就 无 法 指 向 合 适 的 对 象,所 以,st a tic修 饰 的 方 法 中 不 能 使 用 thi s 引 用。
17、J a v a 编 程 时 不 要 使 用 对 象 去 调 用 stat i c 修 饰 的 成 员 变 量、方 法、而 是 应 当 使 用 类 去 调 用 static修 饰 的 成 员 变 量、方 法。假 如 的 确 需 要 在 静 态 方 法 中 访 问 另 一 个 普 通 方 法,则 只 能 重 新 创 建 一 个 对 象。大 部 分 的 时 候,普 通 方 法 访 问 其 他 方 法、成 员 变 量 时 无 须 使 用 th i s 前 缀,但 假 如 方 法 里 有 个 局 部 变 量 和 成 员 变 量 同 名,但 程 序 又 需 要 在 该 方 法 里 访 问 这 个 被 覆
18、盖 的 成 员 变 量,则 必 须 使 用 t h i s 前 缀。T h i s 引 用 也 可 以 用 于 构 造 器 中 作 为 默 认 引 用,由 于 构 造 器 时 直 接 使 用 new关 键 字 来 调 用,而 不 是 使 用 对 象 来 调 用 的,所 以 t his在 构 造 器 中 代 表 该 构 造 器 正 在 初 始 化 对 象。方 法:Java里 的 方 法 不 能 独 立 存 在,所 有 的 方 法 都 必 须 定 义 在 类 里。假 如 这 个 方 法 是 用 来 stati c 修 饰,则 这 个 方 法 属 于 这 个 类,否 则 这 个 方 法 属 于 这
19、个 类 的 实 例。执 行 方 法 时,必 须 使 用 类 或 者 对 象 作 为 调 用 者。同 一 个 类 的 一 个 方 法 调 用 此 外 一 个 方 法 时,假 如 被 调 方 法 是 普 通 方 法,则 默 认 使 用 t h i s 作 为 调 用 者;假 如 被 调 用 方 法 是 静 态 方 法,则 默 认 使 用类 作 为 调 用 者。也 就 是 说 ja v a 中 看 起 来 某 些 方 法 可 以 被 独 立 执 行,但 事 实 上 还 是 使 用 th i s 或 者 类 来 作 为 调 用 者。Ja v a 里 方 法 参 数 传 递 方 式 只 有 一 种:值
20、传 递。所 谓 值 传 递,就 是 讲 实 际 参 数 值 的 副 本(复 制 品)传 入 方 法 内,而 参 数 自 身 不 会 受 到 任 何 影 响。从 JDK1.5 之 后,j a v a 允 许 定 义 形 参 个 数 可 变 的 参 数,从 而 允 许 为 方 法 指 定 数 量 不 拟 定 的 形 参。假 如 在 定 义 方 法 时,在 最 后 一 个 形 参 的 类 型 后 增 长 三 点(),则 表 白 该 形 参 可 以 接 受 多 个 参 数 值,多 个 参 数 值 被 当 成 数 组 传 入。public class V arargs 定 义 形 参 可 变 的 方 法
21、,publi c st a tic void t e st(i nt a,S tri ng.b ooks)/book s 被 当 成 数 组 解 决 fo r(String tmp:books)Sys t em.out.print In(t mp);A A Sy s t era.ou t.p r intln(a);A public stat i c v o id main(Str i n g a rgs)调 用 tes t 方 法 力 est(5,he 1 lo,world,aa);A A 数 组 形 式 的 形 参 可 以 处 在 形 参 列 表 的 任 意 位 置,但 个 数 可 变 的
22、形 参 只 能 处 在 形 参 表 的 最 后。也 就 是 说 最 多 只 能 有 一 个 长 度 可 变 的 形 参。形 参 可 变 和 传 入 数 组 的 区 别:pu b lie s tat i c v oid t e s t(i nt a,String.book s);)ubl i c s t a t i c void te s t(int a,Stri ng bo o k s);Mtest(5,aa,b b,cc);Ates t(5,new Strin g a a,bb,c c);方 法 重 载:Java允 许 同 一 个 类 里 定 义 多 个 同 名 方 法,只 要 形 参 列
23、表 不 同 就 行。假 如 同 一 个 类 中 包 含 了 两 个 或 两 个 以 上 方 法 的 方 法 名 相 同,但 形 参 列 表 不 同,则 被 称 为 方 法 的 重 载。Jav a 程 序 拟 定 一 个 方 法 需 要 三 个 要 素:调 用 者;方 法 名;形 参 列 表。方 法 的 重 载 规 定 就 是 两 同 一 不 同:同 一 个 类 中 方 法 名 相 同,参 数 列 表 不 同。至 于 方 法 的 其 他 部 分,如 方 法 返 回 值 类 型、修 饰 符 等,与 方 法 重 载 没 有 任 何 关 系。pub 1 ic class O v e rloadVara
24、rg s p u b lie voi d t est(Strin g msg)A Sy s t e m.。ut.pri n tin(只 有 一 个 参 数 的 test);)/由 于 前 面 已 有 了 一 个 字 符 串 参 数 的 方 法,则 长 度 可 变 形 参 里 不 包 含 一 个 字 符 串 参 数 的 形 式 publ i c void test(Str i n g.bo oks)Sy s tem.o ut.printl n(形 参 可 变 的 t e st 方 法”);)public s ta t i c vo id ma in(String args)0 v erloadV
25、 a rargs o 1 v=n e w Overl o adV a r a rgs();A/下 面 两 次 调 用 将 执 行 第 二 个 t est方 法 ol v.t e s t();ol v.tes t(aa,bb);/将 调 用 第 一 个 te s t方 法 二 o 1 v.t e s t(aa);A 将 调 用 第 二 个 t est方 法 二 olv.t est(n ew String aa);Java中 变 量 分 为:成 员 变 量 和 局 部 变 量。成 员 变 量 被 分 为 类 变 量 和 实 例 变 量 两 种,定 义 成 员 变 量 时 没 有 static修 饰
26、 的 就 是 实 例 变 量,有 sta t i c 修 饰 的 就 是 类 变 量。变 量 的 命 名:从 程 序 的 可 读 性 角 度 来 看,应 当 是 多 个 故 意 义 的 单 词 连 缀 而 成,其 中 第 一 个 单 词 首 字 母 小 写,后 面 每 个 单 词 首 字 母 大 写。假 如 通 过 一 个 实 例 修 改 了 类 变 量 的 值,由 于 这 个 类 变 量 并 不 属 于 它,而 是 属 于 它 相 应 的 类。因 此,修 改 的 仍 然 是 类 变 量,与 通 过 该 类 来 修 改 类 变 量 的 结 果 完 全 相 同,这 会 导 致 该 类 的 其 他
27、 实 例 来 访 问 这 个 类 变 量 时 也 将 获 得 这 个 被 修 改 过 的 值。成 员 变 量 无 须 显 式 初 始 化,只 要 为 一 个 类 定 义 了 类 变 量 或 实 例 变 量,系 统 就 会 在 这 个 类 的 初 始 化 阶 段 或 创 建 该 类 的 实 例 时,进 行 默 认 初 始 化。实 例 变 量 随 实 例 的 存 在 而 存 在,而 类 变 量 则 随 类 的 存 在 而 存 在。实 例 也 可 访 问 类 变 量,同 一 个 类 的 所 有 实 例 访 问 类 变 量 时,事 实 上 访 问 的 是 该 类 自 身 的 同 一 个 变 量,也 就
28、 是 说,访 问 了 同 一 片 内 存 区。局 部 变 量 根 据 定 义 形 式 的 不 同,又 可 分 为 三 种 形 式:形 参,方 法 局 部 变 量,代 码 块 局 部 变 量;局 部 变 量 除 了 形 参 之 外,都 必 须 显 示 初 始 化。在 同 一 个 类 里,成 员 变 量 的 作 用 范 围 是 整 个 类 内 有 效,一 个 类 里 不 能 定 义 两 个 同 名 的 成 员 变 量,即 使 一 个 是 类 变 量,一 个 是 实 例 变 量 也 不 行;一 个 方 法 里 不 能 定 义 两 个 同 名 的 方 法 局 部 变 量,方 法 局 部 变 量 与 形
29、 参 也 不 能 同 名;同 一 个 方 法 中 不 同 代 码 块 内 局 部 变 量 可 以 同 名;假 如 先 定 义 代 码 块 局 部 变 量,后 定 义 方 法 局 部 变 量,前 面 定 义 的 代 码 块 局 部 变 量 与 后 面 定 义 的 方 法 局 部 变 量 也 可 同 名.J a v a 允 许 局 部 变 量 和 成 员 变 量 同 名,假 如 方 法 里 的 局 部 变 量 和 成 员 变 量 同 名,局 部 变 量 会 覆 盖 成 员 变 量,假 如 需 要 在 这 个 方 法 里 引 用 被 覆 盖 的 成 员 变 量,则 可 使 用 this(对 于 实
30、例 变 量)或 类 名(对 于 类 变 量)作 为 调 用 者 来 限 定 访 问 成 员 变 量。publ i c class Va riable0 verrideTest/定 义 一 个 name 实 例 变 量 private S t r i ng name=李 刚;/定 义 一 个 P rice类 变 量 p r i vate sta t i e d ouble p r i ce=7 8.0;A p U b li C s t a tic v oid ma i n(S t ri n g a r gs)/方 法 里 局 部 变 量 覆 盖 成 员 变 量,将 输 出 price的 局 部
31、变 量 6 5 口 int pr i ce=65;System,out.print 1 n(p r ice);/使 用 类 名 作 为 P r ice变 量 的 限 定,将 输 出 pri c e类 变 量 的 值 System,out.p r i n tin(V a r i ableO ver r ideTest.pr i ce);new V a riableOve r rideTest().info();publ ic void info()A 方 法 里 的 局 部 变 量,局 部 变 量 覆 盖 成 员 变 量,输 出 name局 部 变 量 的 值:孙 悟 空 S tring n a
32、 me=孙 悟 空;A S y stem,o ut.printin(name);/将 输 出 nam e 实 例 的 值:李 刚 二 Syst e m.o u t.print 1 n(this.name);A当 系 统 加 载 类 或 创 建 该 类 的 实 例 时,系 统 自 动 为 成 员 变 量 分 派 内 存 空 间,并 在 分 派 内 存 空 间 后,自 动 为 成 员 变 量 指 定 初 始 值。Person p l=n e w Pers o n();时,假 如 这 行 代 码 是 第 一 次 使 用 Person类,则 系 统 通 常 会 在 第 一 次 使 用 Pers o n
33、 类 时 加 载 这 个 类,并 初 始 化 这 个 类。局 部 变 量 定 以 后,必 须 通 过 显 式 初 始 化 后 才 干 使 用,系 统 不 会 为 局 部 变 量 执 行 初 始 化。局 部 变 量 不 属 于 任 何 类 或 者 实 例,因 此 它 总 是 保 存 在 其 所 在 方 法 的 栈 内 存 中。假 如 局 部 变 量 时 基 本 类 型 的 变 量,则 直 接 把 这 个 变 量 的 值 保 存 在 该 变 量 相 应 的 内 存 中;假 如 局 部 变 量 是 一 个 引 用 类 型 的 变 量,则 这 个 变 量 里 存 放 的 是 地 址,通 过 该 地 址
34、 引 用 到 该 变 量 实 际 引 用 的 对 象 或 者 数 组。栈 内 存 中 的 变 量 无 须 系 统 垃 圾 回 收,往 往 随 是 方 法 或 代 码 块 的 运 营 结 束 而 结 束。假 如 定 义 的 某 个 变 量 是 用 于 描 述 某 个 类 或 某 个 对 象 的 固 有 信 息 的,这 种 变 量 应 当 定 义 成 成 员 变 量。假 如 这 种 信 息 对 这 个 类 的 所 有 实 例 完 全 相 同,或 者 说 它 是 类 相 关 的,则 该 定 义 成 类 变 量;假 如 这 个 信 息 是 实 例 相 关 的,则 应 当 定 义 成 实 例 变 量。用
35、 于 保 存 某 个 类 或 某 个 实 例 状 态 信 息 的 变 量 通 常 应 当 使 用 成 员 变 量。假 如 某 个 信 息 需 要 在 某 个 类 的 多 个 方 法 之 间 进 行 共 享,则 这 个 信 息 应 当 使 用 成 员 变 量 来 保 存。隐 藏 和 封 装 访 问 控 制 符 用 于 控 制 一 个 类 的 成 员 是 否 可 以 被 其 他 类 访 问。Java提 供 了 3 个 访 问 控 制 修 饰 符:priva t e,p rotecte d,和 publ i c,尚 有 一 个 默 认 访 问 控 制 修 饰 符 d efau ItPri v ate
36、(当 前 类 访 问 权 限);d efau It(包 访 问 权 限);pr o tected(子 类 访 问 权 限):假 如 一 个 成 员 使 用 pr o tecte d访 问 修 饰 符 修 饰,那 么 这 个 成 员 既 可 以 被 同 一 个 包 中 的 其 他 类 访 问,也 可 以 被 不 同 包 中 子 类 访 问。通 常 情 况 下,使 用 Pr o t ected修 饰 的 方 法,通 常 希 望 其 子 类 来 重 写 这 个 方 法。Public(公 共 访 问 权 限)对 于 局 部 变 量 而 言,其 作 用 域 就 是 它 所 在 的 方 法,不 也 许 被
37、 其 他 类 访 问,因 此 不 能 使 用 访 问 控 制 符 来 修 饰。外 部 类 只 能 有 两 种 访 问 控 制 级 别:pu b 1 i c 和 默 认,不 能 使 用 P ri vat e 和 p r o tectedpu b 1 ic cl a ss Person priv a te String name;A priva t e i nt age;p ublic voi d set Name(S t r ing nam e)A if(name,leng t h()6|name.1 e ng t h()2)S y stem.out.p rintln(error);return
38、;A A else A t his.name=name;)public Str i n g getNam e()r e turn this,name;A pub 1 ic v oid setAg e(int age)A if(a g e 100|age 0)S y s tem.o ut.prin 1 1 n(e r ror);A el s e A this,age=age;A A p u b lie in t get Ag e()A r etur n thi s.age;A pub 1 ic c lass P e rso n T est pub 1 i c st a t i c voi d m
39、ai n(S t r i ng ar g s)A Person p=new Person();A/下 面 的 变 量 不 会 运 营 错 误,但 是 会 提 醒 错 误 p.s e t A ge(1 000);/由 于 上 面 没 有 成 功 设 立 p 的 age成 员,故 输 出 0Syst em.ou t.p ri n t 1 n(p.g e t A g e();成 功 设 立 P 的 age成 员 p.s e tA g e(3 0);System,out.printin(p.getAg e();/成 功 设 立 p 的 name成 员 p.setN a m e(李 刚”);System
40、,o u f.println(p.g etName();)构 造 器:构 造 器 最 大 的 用 途 是 创 建 对 象 时 执 行 初 始 化。当 创 建 一 个 对 象 时,系 统 为 这 个 对 象 的 实 例 变 量 进 行 默 认 初 始 化,这 种 默 认 的 初 始 化 把 所 有 基 本 类 型 的 实 例 变 量 设 为 0(对 数 值 型 实 例 变 量)或 false(对 布 尔 型 实 例 变 量),把 所 有 引 用 类 型 的 实 例 变 量 设 为 null.假 如 想 改 变 这 种 默 认 的 初 始 化,想 让 系 统 创 建 对 象 时 就 位 该 对 象
41、 的 实 例 变 量 显 式 指 定 初 始 值,就 可 以 通 过 构 造 器 来 实 现。由 于 构 造 器 重 要 用 于 被 其 他 方 法 调 用,用 以 返 回 该 类 的 实 例,因 而 通 常 把 构 造 器 设 立 成 pub 1 i c 访 问 权 限,从 而 允 许 系 统 中 任 何 位 置 的 类 来 创 建 该 类 的 对 象。假 如 设 立 成 protec t ed,重 要 用 于 被 子 类 调 用;设 立 为 p r i v a t e,阻 止 其 他 类 创 建 该 类 的 实 例。假 如 系 统 中 包 含 了 多 个 构 造 器,其 中 一 个 构 造
42、 器 B 的 执 行 体 里 完 全 包 含 另 一 个 构 造 器 A 的 执 行 体。为 了 这 构 造 器 B 中 调 用 构 造 器 A 中 的 初 始 化 代 码,又 不 会 重 新 创 建 一 个 j a va对 象,可 以 使 用 th i s 关 键 字 来 调 用 相 应 的 构 造 器。public cl a ss Apple A p ubl i c S t ring n a me;public Str i ng c o lor;A p ubl i c double we i ght;/两 个 参 数 的 构 造 器.public A p p 1e(String nam e
43、,String c o 1 or)this,n ame=name;A t h is.C O lor=c o lo r;三 个 参 数 的 构 造 器 publ i c Appl e(St r ing nam e,Str i ng c o lor,double w e ight)/通 过 thi s 调 用 另 一 个 重 载 的 构 造 器 的 初 始 化 代 码 t h i s(nam e,color)/通 过 t h is引 用 该 构 造 器 正 在 初 始 化 的 Jav a对 象 t h is.weig h t=weight;)使 用 t h i s 调 用 另 一 个 重 载 的
44、构 造 器 只 能 在 构 造 器 中 使 用,并 且 必 须 作 为 构 造 器 执 行 体 的 第 一 条 语 句。使 用 thi s调 用 重 载 的 构 造 器 时,系 统 会 根 据 this后 括 号 里 的 实 参 来 调 用 形 参 列 表 与 之 相 应 的 构 造 器类 的 继 承:J a v a 继 承 通 过 e x tends关 键 字 来 实 现 实 现 继 承 的 类 被 称 为 子 类,被 继 承 的 类 被 称 为 父 类,有 的 也 称 为 基 类、超 类。由 于 子 类 是 一 种 特 殊 的 父 类,因 此 父 类 包 含 的 范 围 总 比 子 类 包
45、 含 的 范 围 要 大。J a va子 类 不 能 获 得 父 类 的 构 造 器 publ i c cla s s Fr u i t pub lie double w e i g h t;A pub 1 ic v o id info()A Syst e m.ou t.p rint 1 n(we ight);)pu b lie cla s s Apple e xtend s F ruit/A ppie类 继 承 了 Frui t 类,所 以 App le对 象 也 就 有 了 we i ght 成 员 变 量 和 info()方 法 口、p u bl i c st a t ic vo i d
46、 mai n(St r i n g a rgs)(.*Ap p 1 e a=n ew A p p le();/A pple对 象 自 身 没 有 w e ight成 员 变 量,但 是,A p pie父 类 有 weight成 员 变 量,所 以,也 可 以 访 问 App 1 e对 象 的 weigh t成 员 变 量 a.w e ight=56;/调 用 A p p 1 e 对 象 的 info 6 方 法.a.info();)J a v a 类 只 能 有 一 个 直 接 父 类,事 实 上,Java类 可 以 有 无 限 多 个 间 接 父 类。重 写 父 类 方 法:子 类 扩 展
47、了 父 类,子 类 是 一 个 特 殊 的 父 类。大 部 分 时 候,子 类 总 是 以 父 类 为 基 础,额 外 增 长 新 的 成 员 变 量 和 方 法。但 有 一 种 情 况 例 外:子 类 需 要 重 写 父 类 方 法。publ i c class Bird Bir d类 的 f 1 y。方 法 public voi d fly()System,out.prin t 1 n(我 在 天 空 中 飞);4)public c 1 ass Ostri c h extends Bird*/重 写 Bird类 的 f ly()方 法 p u b 1 ic v o i d f ly()Sy
48、stem,out.rin t In(我 在 陆 地 上 飞):A A pu b 1 i C s ta t i c void mai n(Stri ng args)A/创 建 0s t r i ch 对 象,Ostri c h o r=n e w Ostric h();/执 行 O st rich对 象 的 fly()方 法,将 输 出“我 在 陆 地 上 飞”口 or.flyO;网 这 种 子 类 包 含 与 父 类 同 名 方 法 的 现 象 被 称 为 方 法 重 写(Ove rride),也 被 称 为 方 法 覆 盖。可 以 说 子 类 重 写 了 父 类 的 方 法,也 可 以 说
49、子 类 覆 盖 了 父 类 的 方 法。方 法 的 重 写 要 遵 循“两 同 两 小 一 大”规 则,“两 同”即 方 法 名 相 同、形 参 列 表 相 同;“两 小”指 的 是 子 类 方 法 的 返 回 值 类 型 应 比 父 类 方 法 返 回 值 类 型 更 小 或 相 等,子 类 方 法 声 明 抛 出 的 异 常 类 应 比 父 类 声 明 抛 出 的 异 常 类 更 小 或 相 等;“一 大”指 的 是 子 类 方 法 的 访 问 权 限 应 比 父 类 方 法 的 访 问 权 限 更 大 或 相 等。覆 盖 方 法 和 被 覆 盖 方 法 要 么 都 是 类 方 法,要 么
50、 都 是 实 例 方 法。当 子 类 覆 盖 了 父 类 方 法 后,子 类 的 对 象 将 无 法 访 问 父 类 中 被 覆 盖 的 方 法,但 可 以 在 子 类 方 法 中 调 用 被 覆 盖 的 方 法。假 如 需 要 在 子 类 方 法 中 调 用 父 类 中 被 覆 盖 的 方 法,则 可 以 使 用 super(被 覆 盖 的 是 实 例 方 法)或 者 父 类 类 名(被 覆 盖 的 是 类 方 法)作 为 调 用 者 来 调 用 父 类 中 被 覆 盖 的 方 法。假 如 父 类 方 法 具 有 priva t e 访 问 权 限,则 该 方 法 对 其 子 类 是 隐 藏