問
機
器
人
機
器
人
物件的動作
這幾個章節裡,我們已經稍稍地熟悉了一直在講的「物件導向」。但是我們還有一個很重要的東西隻字未提,那就是類別裡的方法。「方法」這名字,在不同程式語言中有不同的命字,但是說白了,它就是一個類別專屬的函數而已。
物件,動起來吧!
這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 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」 */
無相關資源
收起側邊目錄
前往目錄頁面