慶祝學呀
百萬
造訪!
尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
類別中的方法
編輯章節
EDU-MD
Google 教室
加至書籤
# 物件的動作 ![](https://files.realpython.com/media/Pythons-Instance-Class-and-Static-Methods-Demystified_Watermarked.5bce71bc29d0.jpg) 這幾個章節裡,我們已經稍稍地熟悉了一直在講的「物件導向」。但是我們還有一個很重要的東西隻字未提,那就是類別裡的**方法**。「方法」這名字,在不同程式語言中有不同的命字,但是說白了,它就是一個**類別專屬的函數**而已。 ## 物件,動起來吧! ::: suggestion 這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 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」 */ ```
複製內容