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
模块
是一个对象
生成类
也是一个对象
。