昨天講到類別比模組多了
new(新的), allocate(分配), superclass(超類別/父類別)
這三種實體方法。
可以參考這裡
class1 = Class.new do
def meth1
"hello"
end
def meth2
"bye"
end
end
a = class1.new
p a.meth1 # "hello"
p a.meth2 # "bye"
class1使用了實體方法new,
產生了實體a,
實體a可以使用class1內的方法。
class2 = Class.new do
def initialize
@initialized = true
end
def initialized?
@initialized || false
end
end
b = class2.allocate
p b.initialized? # false
一般來說,
使用new方法產生了實體,
如果類別內有initialize(初始化)將會一併執行。
但使用分配的方法,就不會執行初始化。
p Class.superclass #Module
p Module.superclass #Object
p Object.superclass #BasicObject
p BasicObject.superclass #nil
使用superclass方法,
可以知道繼承自哪裡,
也就是說可以找到爸爸是誰的方法。
由上面例子可一層一層推知相對關係
Class(類別)上一層是Module(模組)
Module(模組)上一層是Object(物件)
Object(物件)上一層是BasicObject(基本物件)
BasicObject(基本物件)上一層是nil(虛空)也就是沒有上一層。
ruby世界的血緣關係圖出現了!
Ruby
new
allocate
superclass