物件的動作




這幾個章節裡,我們已經稍稍地熟悉了一直在講的「物件導向」。但是我們還有一個很重要的東西隻字未提,那就是類別裡的方法。「方法」這名字,在不同程式語言中有不同的命字,但是說白了,它就是一個類別專屬的函數而已。


物件,動起來吧!


這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。

假設我們要寫一個程式,記錄籠子裡每一條狗的資料,那麼我們可以建立一個「狗」的類別,這麼一來我們便可以建立很多「狗」的物件,讓那些物件各自代表一條狗(每一種程式語言都不太一樣,但在此我們用 constructor 代表建構式):

class dog {
   constructor(n, a){      this.name = n;      this.age = a;   }}

這麼一來,我們就可以宣告一些變數,建立一些狗的物件吧!現在我們來建立兩隻狗的物件:

dog1 = dog('Amy', 6);
dog2 = dog('Hank', 4);

如此,我們就可以印出狗的名字跟年齡了:

print(dog1.name);
print(dog1.age);

但是,如果每次都要這樣寫,不是很不直覺嗎?還有,有沒有其他的東西可以讓這個「狗」的類別功能更多呢?

方法」在此時就發揮作用了。讓我們加入一個方法,讓這些狗兒可以自我介紹:

class dog {
   constructor(n, a){
      this.name = n;
      this.age = a;
   }
   selfIntroduce(){
      print("I am " + this.name);
   }
}

上面程式裡的 selfIntroduce() 便是一個方法。要怎麼呼叫這個自我介紹的方法呢?讓我們建立另一隻狗的物件,並且呼叫這個方法讓牠自我介紹:

/* 建立物件 */
dog3 = dog('Sherry', 7);
/* 呼叫方法 */
dog3.selfIntroduce();
/* 螢幕上印出: */
/* 「I am Sherry」 */


用方法改變屬性


現在,又有一條狗要過生日了,讓我們來設計一個方法,當呼叫這個方法時,就會將該狗的年齡加 1:

class dog{
   constructor(n, a){
      this.name = n;
      this.age = a;
   }
   selfIntroduce(){
      print("I am " + this.name);
   }
   birthday(){
      this.age += 1;
   }
}

這條狗的名字叫做 Bob,原本7歲,今天生日變成8歲。讓我們用以上的敘述建立一個物件吧!

dog4 = dog('Bob', 7);
print(dog4.age);
/* 螢幕上印出: */
/* 「7」 */
dog4.birthday();
print(dog4.age);
/* 螢幕上印出: */
/* 「8」 */

上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+1 
感謝內容貢獻者 此篇文章由 1 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。