首页 > 解决方案 > ruby 对象如何成为对象的子类?

问题描述

2.3.3 :001 > Object.class #=> Class
2.3.3 :002 > Class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]

我只是无法理解这个概念。

我想象的是如下所示

class Object < Class
  ...
end

class Class < Module
  ...
end

class Module < Object
  ...
end

这可能看起来很愚蠢,我错过了什么吗?我似乎找不到任何相关的答案。

标签: rubyoopinheritancehierarchyclass-hierarchy

解决方案


ObjectClass显然,class 不是 的子类。实际上,Object是其他类的子类BasicObject和默认超类:

Object.superclass
# => BasicObject

class A
end

A.superclass
# => Object

我猜你把对象的class(表示给定对象是什么类,Object是一个类,所以这个方法正确地表示)与继承混淆了。


推荐阅读