想要知道類別和模組的差異,
我要先知道一件事:
類別是模組的後代,
類別繼承自模組
我們用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 跟繼承有關。
也就是說,類別比模組多了可以「產生實體」的能力以及「繼承」的能力。
參考來源
明天我們再繼續看看詳細的差異。
Ruby
Class
Module