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