superclass
の方法ですClass
。NilClass
から継承するようになりましたObject
。しかし、クラスはクラスメソッドObject
を継承する機会がありません。Class
以下から参照Documentaion
Classes, modules, and objects are interrelated. In the diagram that follows, the vertical arrows represent inheritance,
and the parentheses meta-classes. All metaclasses are instances of the class `Class'.
+---------+ +-...
| | |
BasicObject-----|-->(BasicObject)-------|-...
^ | ^ |
| | | |
Object---------|----->(Object)---------|-...
^ | ^ |
| | | |
+-------+ | +--------+ |
| | | | | |
| Module-|---------|--->(Module)-|-...
| ^ | | ^ |
| | | | | |
| Class-|---------|---->(Class)-|-...
| ^ | | ^ |
| +---+ | +----+
| |
obj--->OtherClass---------->(OtherClass)-----------...
nil
はい、それは のオブジェクトであるとして正しいです。これは、クラスの最上位にあるものをNilClass
継承します。したがって、メソッドを継承できませんでした。Object
Class
Nilclass
superclass
Object.superclass.superclass #=> nil
nil.superclass #=> undefined method error since nil is not a class