Page 14 -
P. 14
第一章 認識程式語言
類別是抽象的系統不可能給抽象的東西分配空間,而物件則是具體的。)假
設我們已經在上面定義了狗這個類別,我們就可以用這個類別來定義物件:
定義萊絲是狗
萊絲.毛皮顏色:棕白色
萊絲.吠叫()
其中「萊絲」就是「物件」,「毛皮顏色」為「屬性」,「棕白色」為「屬
性內容」,「吠叫()」就是「事件」。我們無法讓狗這個類別去吠叫,但是
我們可以讓物件「萊絲」去吠叫,正如狗可以吠叫,但沒有具體的狗就無法
吠叫。
(三)繼承:繼承性(Inheritance)是指,在某種情況下,一個類別會有「子類別」。子
類別比原本的類別(稱為父類別)要更加具體化。例如,「狗」這個類別可
能會有它的子類別「牧羊犬」和「吉娃娃犬」。在這種情況下,「萊絲」可
能就是牧羊犬的一個例項。子類別會繼承父類別的屬性和行為,並且也可包
含它們自己的。我們假設「狗」這個類別有一個方法(行為)叫做「吠叫()」
和一個屬性叫做「毛皮顏色」。它的子類別(前例中的牧羊犬和吉娃娃犬)
會繼承這些成員。這意味著程式設計師只需要將相同的代碼寫一次。在虛擬
碼中我們可以這樣寫:
類別牧羊犬:繼承狗
定義萊絲是牧羊犬
萊絲.吠叫() /* 注意這裡呼叫的是狗這個類別的吠叫方法。*/
(四)封裝性:具備封裝性(Encapsulation)的物件導向程式設計隱藏了某一方法的具體
執行步驟,取而代之的是通過訊息傳遞機制傳送訊息給它。因此,舉例來
說,「狗」這個類別有「吠叫()」的方法,這一方法定義了狗具體該通過
什麼方法吠叫。但是,萊絲的朋友並不知道它到底是如何吠叫的。從例項
來看:
/* 一個程序導向的程式會這樣寫: */
定義萊絲
萊絲.設定音調(5)
10