2014-09-13 23 views
1

在Metaprogramming Ruby書中,我可以跨越超類和類的概念。 這裏是參考圖像:Ruby類中的超類是'Object',但'Class'是'Module

Object class superclass explained

據我所知:類具有限定一個實例方法,它可以由下式定義(此處MyClass的

任何新的類被稱爲

我的問題是:

父母有超類爲模塊但對象MyClass的超類爲對象。爲什麼超類的Myclass對象但不是模塊?如果是通過設計,爲什麼這樣設計?

回答

2

如果您在Ruby中定義一個新類Foo,那麼的確,這是Class類的一個實例,並Foo.class.superclassModule預期。但既然你問不是的Foo.class祖先,而是直接有關的Foo祖先,後來才知道,

class Foo 
end 

是一樣的書寫

class Foo < Object 
end 

換句話說,新定義的類將默認成爲Object類的子類,除非另有說明。當然,您可以手動定義

class Bar < Module 
end 

爲了創建Module類的顯式子類。 Module類的後裔具有特定的特性,並且在Ruby中特別有用。請注意,類Class不能被分類。

相關問題