ruby中的哪个类是所有类的父类?

ruby中的哪个类是所有类的父类?,ruby,Ruby,我原以为Object是所有类的祖先,但我尝试了一些让我困惑的东西 Object.superclass # => BasicObject Object.superclass.superclass # => nil Object.superclass.superclass.superclass # => undefined method error since nil is not a class Object.superclass.superclass.class # =>

我原以为
Object
是所有类的祖先,但我尝试了一些让我困惑的东西

Object.superclass # => BasicObject
Object.superclass.superclass # => nil
Object.superclass.superclass.superclass # => undefined method error since nil is not a class
Object.superclass.superclass.class # => Nilclass
Object.superclass.superclass.class.superclass # => Object
除了
nil
,所有东西都有一个超类,
nil
NilClass
的一个实例,所以它不能有超类方法。如何将
对象
作为
对象的超类

您不会得到“对象作为对象的超类”。您得到的是“对象作为Nilclass的超类”。

BasicObject是Ruby中所有类的父类

Object的超类是BasicObject,而BasicObject没有超类。不存在事物的标准占位符为nil,因此BasicObject.superclass返回nil

恰好nil是类NilClass的一个实例,它是Object的一个子类。这并不意味着NilClass是BasicObject的超类,或者该对象是Object的超类。

类的方法。现在
NilClass
继承自
Object
。但是类
对象
没有机会继承类
方法

请参阅下面的

是的,这是正确的,因为
nil
NilClass
的一个对象,它又继承了
object
,该对象位于类
class
的顶部。因此,
Nilclass
无法继承
superclass
方法

Object.superclass.superclass #=> nil
nil.superclass #=> undefined method error since nil is not a class

BasicObject
是最顶层的类,它是
class
的一个实例,它扩展了
Object
,扩展了
BasicObject
。。。真是奇怪的遗传,lol@ParitoshSingh:这与继承无关。你真的把事情搞混了!是的,但nil是NilClass的对象,它是object的超类。它怎么可能是正确的?不,nil作为BasicObject的超类返回,因为BasicObject没有超类
nil
不是
Object
BasicObject
的超类
BasicObject
没有超类,这就是为什么
BasicObject.superclass
返回
nil
,即nothing,nada,zero。请看:“当给定的类没有父类时,返回nil”是的,我也尝试过同样的方法,是不是有点奇怪,继承对象的其他类的对象是对象的超类。是的,这听起来很奇怪,BasicObject的supeclass是nil,nil是NilClass的object,它的父对象是object,BasicObject是object的父对象。@Paritossing:你读过人们在这里写的东西吗?你一次又一次地发表同样的评论…@DanielHilgarth如果我遗漏了什么,我很抱歉。好的,我明白你的意思,但这似乎不是表示超类的正确方法。事实上,如果基本对象是最上面的,那么基本对象不应该有supeclass函数,即我的点
Object.superclass.superclass #=> nil
nil.superclass #=> undefined method error since nil is not a class