• 沒有找到結果。

關於類別的繼承

N/A
N/A
Protected

Academic year: 2021

Share "關於類別的繼承"

Copied!
17
0
0

加載中.... (立即查看全文)

全文

(1)
(2)

關於類別的繼承

Java 可以根據既有的「 Car 類別」為基礎,輕易的就 產生另一個可以用來表示賽車的「 RacingCar 類別」

,像這樣以既有的類別為基礎,衍生出另一個類別的 現象,稱為:

類別的延伸 (extends)

換句話說,新的類別可以從舊類別繼承而來,包括舊

類別的性質和功能( 2 者統稱為成員)也會一併繼承

到新類別當中。

(3)

類別的延伸

在宣告子類別的時候,必須在程式中使用 extends 這 個關鍵字,後面再加上父類別的名稱。只要宣告的方 式正確,可以從父類別 Car 衍生出子類別 RacingCar

延伸父類別之後,就可以宣告子類別。

而子類別會繼承父類別的成員。

(4)

class 子類別名稱 extends 父類別名稱 {

子類別新增的成員…

子類別的建構元 ( 參數… ) {

} }

類別的延伸

(5)

產生子類別的物件

class Sample1 {

public static void main(String args[]) {

RacingCar rccar1;

rccar1 = new RacingCar();

rccar1.setCar(1234, 20.5);

rccar1.setCourse(5);

} }

產生子類別的物件

呼叫子類別新增的 method

呼叫繼承而來的 metho d

父類別延伸之後可以設計新的子類別。

(6)

呼叫父類別的建構元

如果您沒有任何的指定,產生子類別的物件時,會在 子類別建構元的開頭,先呼叫父類別中沒有引數的建 構元並加以執行。

父類別的建構元其實並沒有繼承給子類別,不過子類 別仍然會自動呼叫父類別的建構元,為的就是要幫助 子類別對繼承自父類別的成員進行初始值的設定工作

(7)

使用 super()

如果您想要從子類別的建構元,呼叫父類別當中特定

的建構元,必須使用 super() 關鍵字。

(8)

從子類別存取其他類別的成員資料

所謂的成員 (member) ,指的是一個類別 (class) 內 部的 field 和 method 。

如果父類別裏面的成員原本就是私有成員,則子類別 將無法存取到這些私有類別的資料。

私有成員

私有成員不能被同一類別以外的其他程式存取,因

此如果父類別裏面的成員原本就是私有成員,則子

類別將無法存取到這些私有類別的資料。

(9)

保護成員

父類別內部的成員一旦設定為「 protected 」,其 性質和 private member 有所不同,也就是說:子 類別可以存取父類別內部

protected member 的資

從子類別存取其他類別的 成員資料

(10)

overriding method

在子類別中定義一個和父類別的 method 名稱、參數數

目、資料型態完全相同的 method ,用來取代父類別當

中原本的 method 功能,稱為改寫 (overriding) 。

(11)

瞭解改寫 (overriding) 的重要性

在一個稍為大型的程式中一定會產生各式各樣的物件

,因此對各種類別所產生的物件加以管理是必然的事

,於是有人就想到利用下列這種「父類別的陣列」來

儲存各種類別所產生的物件。

(12)

指定 final

當您在設計類別的時候,其中可能有一些父類別的 met

hod 您根本不想讓它在子類別中產生被改寫 (overridi

ng) 的現象。如果有這種需求時,您必須在父類別的 m

ethod 的第 1 行加上 final ,就會禁止被改寫現象繼續

產生。

(13)

建立類別的階層

對 Java 來說,一個父類 別可以延伸出數個子類 別,這時候整個類別家 族的結構如右圖所示:

子類別再繼續往下

延伸,可以再產生

新的子類別。

(14)

關於 Object 類別

如果該類別當時沒有指定任何父類別,則「 Java 會 自動設定讓該類別繼承 java.lang.Object 這個類別 做為父類別」。

class Car {

...

}

什麼都沒有指定時,就會以Object 類別做為 父類別,自己則變成子類別

(15)

定義 toString() method

toString() method ,這個 method 的主要用意是:

 把物件轉成字串並將結果傳回原呼叫程式。

使用 toString() method 時,最好是自行定義 toStri

ng() method 、然後再加以呼叫,比較能獲得自己想

要的結果。

(16)

使用 equals() method

equals() method ,其主要用意是:

驗證某兩個物件是否相同,是的話傳回 true ,否的

話傳回 false 。

(17)

使用 getClass() method

getClass() method ,這個 method 的用意是:

 傳回「該物件究竟屬於哪一個類別」這樣的相關資 訊。

getClass() method 會把某物件的相關類別資料匯集

起來並傳回一個 Class 類別的物件。

參考文獻

相關文件

收費原則 :CCC Code前6碼相同者歸為1類 登錄10個類別以 內收費 NT$5,000. 超過10個類別每類加收費 NT$1,000(超過部分)

類別 項目名稱 對象或條件限制 主要內容 辦理機關. 職 業

這兩個問題所牽涉到的極限類型是一樣的,而我們特別把這 種割線斜率的極限稱為導數 (derivative)

甄選類別 甄選名額 缺額性質 聘期

達成效益:本部持續推動多元類別之 職前訓練,運用自有場地、設備、師 資,並結合地方政府公、民營訓練單 位,辦理多元訓練職類課程,並視需

以下 Java 程式執行完後,輸出結果為何?(A)無法編譯,因為 Rectangle 類別不能同時 extends 一個類別且 implemets 一個介面(B)無法編譯,因為 Shapes 類別沒有

甄選類別 甄選名額 缺額性質 聘期

(2) 「唯以分別安立」 ,表示對對象觀察透過分別心找出「性質」 「定