類別 <> 前往海底一萬米!想要一睹 Ruby 世界裡的 All Blue 就進來吧!

https://ithelp.ithome.com.tw/upload/images/20200917/20128363omyHRrqOXP.jpg

[Day10] 人魚、魚人和人類雖然是不同的類別,但是也可以好好地生活在一起!


什麼是類別?

今天要介紹的是 Ruby 裡的類別(Class)
這是一個 Ruby 語言裡相當重要的關鍵字

簡單來說,類別是拿來產生實體(Instance)的東西,實體就是昨天有介紹過的物件。

但這樣解釋其實不夠完整,想要弄懂 Ruby 裡的類別其實沒有這麼容易,類別的概念裡隱含著 Ruby 這門程式語言的設計哲學,以及有些我尚未掌握的概念,這是無法一蹴而就的,因此,我預計把它拆成幾個部分,用不同天的篇幅介紹:

  • 類別基礎介紹
  • 繼承
  • 類別方法
  • 開放類別
  • Singleton Class 與繼承鍊(可能)

好的,就先讓我們從頭開始來認識類別吧!


經典的烤盤範例

要了解 Ruby 的類別,龍哥是用烤盤和雞蛋糕來巧妙比喻類別與實體的關係。

不過,我今天想吃章魚燒:
https://ithelp.ithome.com.tw/upload/images/20200920/20128363fkT7ZgjfKa.jpg
看著看著好像餓了…

在 Ruby 裡,那個負責做出章魚燒的烤盤就是類別,一個個熱騰騰的章魚燒則是實體
因此只要烤盤沒壞掉,而且原料足夠的話,每次做出來的應該都會是同樣好吃的章魚燒!(原則上啦,不然會被客訴啊!)

所以在定義一個類別時,可以設定產生新實體時要做什麼,或是在類別裡定義一些方法等等。
然後,一個個的實體就可以透過類別生出來囉!

接著,來看一下類別的定義吧!


類別的名稱必須要是常數!

類別的名稱必須要是常數,也就是第一個字元一定要大寫。
不過,並不是看到開頭大寫的就一定是類別,像是模組,也得用大寫常數命名,過幾天會介紹它,這裡先賣個關子。

實際來看 code 吧!
先定義一個 Cat 的類別:

1
2
3
4
5
class Cat
def walk(place)
puts "我想去 #{place}, 喵~"
end
end

然後用 Cat 類別來產生新的實體 mirunini

1
2
miru = Cat.new
nini = Cat.new

(題外話,miru 和 nini 是我朋友家的兩隻貓,超級可愛!)

可以看到 mirunini 都能呼叫 walk 方法:
這是因為他們都屬於 Cat 這個類別

1
2
3
4
5
6
miru.walk ("公園")
miru.walk("遊樂園")

# 印出:
我想去 公園 喵~
我想去 遊樂園 喵~

Ruby 類別的簡單介紹就先到這邊啦!

祝大家都能找到自己心目中的 All Blue!
https://ithelp.ithome.com.tw/upload/images/20200919/20128363bndnA7GRB5.jpg