iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0

Day23-[Ruby]類別(Class)與模組(Module)的差異在哪裡?

類別與模組的關係

想要知道類別和模組的差異,
我要先知道一件事:
類別是模組的後代,
類別繼承自模組

我們用superclass來證明一下

p Class.superclass   #Module

由此證明了類別是一種模組。

類別與模組的差異

我們知道類別的爸爸是模組後,
我們可以想像類別擁有了所有模組的功能,
但類別青出於藍更勝於藍,
比模組多了一些功能。
我們可以用methods與instance_methods知道

# 前、後代的類別方法差異:
p Class.methods - Module.methods
# 前、後代的實體方法差異:
p Class.instance_methods - Module.instance_methods

範例來源

出來的結果是

[]
[:new, :allocate, :superclass]

由此可知,
類別在類別方法上和模組並無不同,
但在實體方法上多了new, allocate, superclass

其中,allocate 跟 new 跟產生實體(instance)有關,superclass 跟繼承有關。
也就是說,類別比模組多了可以「產生實體」的能力以及「繼承」的能力。
參考來源

明天我們再繼續看看詳細的差異。

tags: Ruby Class Module

上一篇
Day22-[Ruby]@@類別變數與@實體變數差異的比較(Part II)
下一篇
Day24-[Ruby]new(新的)、allocate(分配)、superclass(超類別/父類別)是什麼?
系列文
從零開始的工程師轉職之路.新手學Ruby / Ruby on Rails遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言