成 員 函 數(shù) 成 員 函 數(shù) 是 一 ?copy; 可 被 其 它 類 或 自 己 類 調(diào)用 的 處 理 子 程 序。 一 個 特 殊 的 成 員 函 數(shù) 叫 構(gòu) 造 函 數(shù), 這 個函 數(shù) 名 稱 一 般 與 本 類 名 程 相 同。 它 沒 有 返 回 值。
構(gòu) 造 函 數(shù) 和 成 員 函 數(shù) 當(dāng) 你 在Java里 定 義 一 個 類 時,你 可 定義 一 個 或 多 個 可 選 的 構(gòu) 造 函 數(shù),當(dāng) 創(chuàng) 建 本 類 的 一 個 對 象 時用 某 一 個 構(gòu) 造 函 數(shù) 來 初 始 化 本 對 象。 用 前 面 的 程 序 例 子來 說 明,當(dāng)ClassOne類 創(chuàng) 建 一 個 新 實(shí) 例 時, 所 有 成 員 函 數(shù) 和 變量 被 創(chuàng) 建(創(chuàng) 建 實(shí) 例)。 構(gòu) 造 函 數(shù) 被 調(diào) 用。 ClassOne mc: mc = new ClassOne();
關(guān) 鍵 詞new用 來 創(chuàng) 建 一 個 類 的 實(shí) 例,一 個 類 用new初 始 化 ?reg; 前 并 不 占 用 內(nèi) 存,它 只 是 一 個 類 型 定 義, 當(dāng)mc對 象 初 始 化 后,mc對象 里 的i變 量 等 于10。 你 可 以 通 過 對 象 名 來 引 用 變 量i。(有 時稱 ?reg; 為 實(shí) 例 變 量) mc.i++;//mc實(shí) 例 變 量 加1 因 為mc有ClassOne類的 所 有 變 量 和 成 員 函 數(shù), 我 們 可 以 使 用 同 樣 的 語 法 來 調(diào)用 成 員 函 數(shù) Add_i: Add_i(10); 現(xiàn) 在mc.i變 量 等 于21.
結(jié) 束 函 數(shù) Java并 不 支 持 析 構(gòu) 函 數(shù)(C++里 的 定 義),因 為java本身 提 ?copy; 對 象 無 用 時 自 動 清 除 的 功 能,同 時 它 也 提 ?copy; 了 一 個 自 動 拉 圾 箱 的 成 員 函 數(shù), 在 清 除 對 象 時 被 調(diào) 用: Protected void finalize() { close(); }
3.3 對 象 有 效 范 圍 和 廢 物 自 動 回 收
對 象 有 一 定 的 生 命 期 并 在 它 的 生 命 期 間 使 用 資 源,當(dāng) 一個 對 象 不 再 被 使 用 時,它 應(yīng) 釋 放 內(nèi) 存, 避 免 內(nèi) 存 溢 出。 在Java里,收集 和 釋 放 內(nèi) 存 是 一 個 叫 自 動 廢 品 回 收 站 的 線 程 的 責(zé) 任。這 個 線 程 監(jiān) 視 對 象 有 效 范 圍 并 給 一 個 走 出 有 效 范 圍 的 對象 作 上 標(biāo) 識。
例 如: String s;//沒 有 分 配 內(nèi) 存 s = new String("oldstring");//分配 內(nèi) 存 s ="newstring";//重 新 分 配 內(nèi) 存(創(chuàng) 建 新 對 象)
我 們 將 在 以 后 訪 問String類 時 將 更 加 明 白 它 的 工 作 過 程,但它 的 快 速 工 作 過 程 是 這 樣 的: 1.創(chuàng) 建 一 個 新 的String類 對 象并 填 充 以"oldstring" 2.創(chuàng) 建 另 一 個String對 象 并 填 充以"newstring" 注 意 我 們 創(chuàng) 建 了 兩 個 對 象。 Stirng 對 象 "oldstring" Stirng 對 象 "newstring"
在 第 三 條 語 句 里,第 一 個 包 括"oldstring"的 叫 做s的對 象 已 走 出 了 有 效 范 圍,沒 有 任 何 ?法 可 以 再 訪 問 他,我 們現(xiàn) 在 有 一 個 新 的 對 象 也 叫s,包 含"newstring"。 在 下 一個 廢 品 回 收 線 程,前 一 個 對 象 將 被 標(biāo) 識 并 清 除。
構(gòu) 造 函 數(shù) 和 成 員 函 數(shù) 當(dāng) 你 在Java里 定 義 一 個 類 時,你 可 定義 一 個 或 多 個 可 選 的 構(gòu) 造 函 數(shù),當(dāng) 創(chuàng) 建 本 類 的 一 個 對 象 時用 某 一 個 構(gòu) 造 函 數(shù) 來 初 始 化 本 對 象。 用 前 面 的 程 序 例 子來 說 明,當(dāng)ClassOne類 創(chuàng) 建 一 個 新 實(shí) 例 時, 所 有 成 員 函 數(shù) 和 變量 被 創(chuàng) 建(創(chuàng) 建 實(shí) 例)。 構(gòu) 造 函 數(shù) 被 調(diào) 用。 ClassOne mc: mc = new ClassOne();
關(guān) 鍵 詞new用 來 創(chuàng) 建 一 個 類 的 實(shí) 例,一 個 類 用new初 始 化 ?reg; 前 并 不 占 用 內(nèi) 存,它 只 是 一 個 類 型 定 義, 當(dāng)mc對 象 初 始 化 后,mc對象 里 的i變 量 等 于10。 你 可 以 通 過 對 象 名 來 引 用 變 量i。(有 時稱 ?reg; 為 實(shí) 例 變 量) mc.i++;//mc實(shí) 例 變 量 加1 因 為mc有ClassOne類的 所 有 變 量 和 成 員 函 數(shù), 我 們 可 以 使 用 同 樣 的 語 法 來 調(diào)用 成 員 函 數(shù) Add_i: Add_i(10); 現(xiàn) 在mc.i變 量 等 于21.
結(jié) 束 函 數(shù) Java并 不 支 持 析 構(gòu) 函 數(shù)(C++里 的 定 義),因 為java本身 提 ?copy; 對 象 無 用 時 自 動 清 除 的 功 能,同 時 它 也 提 ?copy; 了 一 個 自 動 拉 圾 箱 的 成 員 函 數(shù), 在 清 除 對 象 時 被 調(diào) 用: Protected void finalize() { close(); }
3.3 對 象 有 效 范 圍 和 廢 物 自 動 回 收
對 象 有 一 定 的 生 命 期 并 在 它 的 生 命 期 間 使 用 資 源,當(dāng) 一個 對 象 不 再 被 使 用 時,它 應(yīng) 釋 放 內(nèi) 存, 避 免 內(nèi) 存 溢 出。 在Java里,收集 和 釋 放 內(nèi) 存 是 一 個 叫 自 動 廢 品 回 收 站 的 線 程 的 責(zé) 任。這 個 線 程 監(jiān) 視 對 象 有 效 范 圍 并 給 一 個 走 出 有 效 范 圍 的 對象 作 上 標(biāo) 識。
例 如: String s;//沒 有 分 配 內(nèi) 存 s = new String("oldstring");//分配 內(nèi) 存 s ="newstring";//重 新 分 配 內(nèi) 存(創(chuàng) 建 新 對 象)
我 們 將 在 以 后 訪 問String類 時 將 更 加 明 白 它 的 工 作 過 程,但它 的 快 速 工 作 過 程 是 這 樣 的: 1.創(chuàng) 建 一 個 新 的String類 對 象并 填 充 以"oldstring" 2.創(chuàng) 建 另 一 個String對 象 并 填 充以"newstring" 注 意 我 們 創(chuàng) 建 了 兩 個 對 象。 Stirng 對 象 "oldstring" Stirng 對 象 "newstring"
在 第 三 條 語 句 里,第 一 個 包 括"oldstring"的 叫 做s的對 象 已 走 出 了 有 效 范 圍,沒 有 任 何 ?法 可 以 再 訪 問 他,我 們現(xiàn) 在 有 一 個 新 的 對 象 也 叫s,包 含"newstring"。 在 下 一個 廢 品 回 收 線 程,前 一 個 對 象 將 被 標(biāo) 識 并 清 除。