Ruby 类别';s超类和字符串';s超类

Ruby 类别';s超类和字符串';s超类,ruby,superclass,Ruby,Superclass,类有其超类模块,但任何类,如字符串,都有超类对象。为什么会这样?要弄清楚,您需要检查Ruby: 类、模块和对象是相互关联的。在下图中,垂直箭头表示继承,括号表示元类。所有元类都是类的实例 +---------+ +-... | | | BasicObject-----|-->(BasicObject)-----

有其超类
模块
,但任何类,如
字符串
,都有超类
对象
。为什么会这样?

要弄清楚,您需要检查Ruby:

类、模块和对象是相互关联的。在下图中,垂直箭头表示继承,括号表示元类。所有元类都是类
的实例

                         +---------+             +-...
                         |         |             |
         BasicObject-----|-->(BasicObject)-------|-...
             ^           |         ^             |
             |           |         |             |
          Object---------|----->(Object)---------|-...
             ^           |         ^             |
             |           |         |             |
             +-------+   |         +--------+    |
             |       |   |         |        |    |
             |    Module-|---------|--->(Module)-|-...
             |       ^   |         |        ^    |
             |       |   |         |        |    |
             |     Class-|---------|---->(Class)-|-...
             |       ^   |         |        ^    |
             |       +---+         |        +----+
             |                     |
obj--->OtherClass---------->(OtherClass)-----------...
您所有的问题都可以通过查看上面的图表来回答

但是任何类,比如“String”,都会得到超类“Object”。为什么

查看图表中的
OtherClass
<代码>散列
字符串
数组
等都是
其他类

                         +---------+             +-...
                         |         |             |
         BasicObject-----|-->(BasicObject)-------|-...
             ^           |         ^             |
             |           |         |             |
          Object---------|----->(Object)---------|-...
             ^           |         ^             |
             |           |         |             |
             +-------+   |         +--------+    |
             |       |   |         |        |    |
             |    Module-|---------|--->(Module)-|-...
             |       ^   |         |        ^    |
             |       |   |         |        |    |
             |     Class-|---------|---->(Class)-|-...
             |       ^   |         |        ^    |
             |       +---+         |        +----+
             |                     |
obj--->OtherClass---------->(OtherClass)-----------...
在Ruby中,“类”本身具有超类“模块”


这就是它的设计方式,同样可以从图中得到回答。

在ruby中,一切都是对象,包括类,而类本身也是对象。
String
对象有自己的类,称为
class
String
本身也是一个类,String的超类是“Object”


同时,
Class
本身也是一个对象,而超类是由Ruby语言设计的
Module

您能用`字符'包装语言概念/关键字吗?这将为这个单词提供一个很好的格式,比如
This
。这不是真的
Integer
具有超类
Numeric
模块
是一个
对象
生成
也是一个
对象