Page 14 -
P. 14

第一章 認識程式語言

               類別是抽象的系統不可能給抽象的東西分配空間,而物件則是具體的。)假
               設我們已經在上面定義了狗這個類別,我們就可以用這個類別來定義物件:
               定義萊絲是狗
               萊絲.毛皮顏色:棕白色
               萊絲.吠叫()
               其中「萊絲」就是「物件」,「毛皮顏色」為「屬性」,「棕白色」為「屬
               性內容」,「吠叫()」就是「事件」。我們無法讓狗這個類別去吠叫,但是
               我們可以讓物件「萊絲」去吠叫,正如狗可以吠叫,但沒有具體的狗就無法
               吠叫。
(三)繼承:繼承性(Inheritance)是指,在某種情況下,一個類別會有「子類別」。子
               類別比原本的類別(稱為父類別)要更加具體化。例如,「狗」這個類別可
               能會有它的子類別「牧羊犬」和「吉娃娃犬」。在這種情況下,「萊絲」可
               能就是牧羊犬的一個例項。子類別會繼承父類別的屬性和行為,並且也可包
               含它們自己的。我們假設「狗」這個類別有一個方法(行為)叫做「吠叫()」
               和一個屬性叫做「毛皮顏色」。它的子類別(前例中的牧羊犬和吉娃娃犬)
               會繼承這些成員。這意味著程式設計師只需要將相同的代碼寫一次。在虛擬
               碼中我們可以這樣寫:
               類別牧羊犬:繼承狗

               定義萊絲是牧羊犬
               萊絲.吠叫() /* 注意這裡呼叫的是狗這個類別的吠叫方法。*/
(四)封裝性:具備封裝性(Encapsulation)的物件導向程式設計隱藏了某一方法的具體

                  執行步驟,取而代之的是通過訊息傳遞機制傳送訊息給它。因此,舉例來
                  說,「狗」這個類別有「吠叫()」的方法,這一方法定義了狗具體該通過
                  什麼方法吠叫。但是,萊絲的朋友並不知道它到底是如何吠叫的。從例項
                  來看:
                  /* 一個程序導向的程式會這樣寫: */
                  定義萊絲
                  萊絲.設定音調(5)

                                                     10
   9   10   11   12   13   14   15   16   17   18   19