ruby中类的层级关系

所有的类最终继承于Object,Object本身又继承于 BasicObject。BasicObject是ruby对象体系中的根节点。

'hello'.class
=> String
String.class
=> Class

String.superclass
=> Object
Object.superclass
=> BasicObject
BasicObject.superclass
=> nil
Class.superclass
=> Module
Module.superclass
=> Object

 因此,一个类只不过是一个增强的Module,增加了几个方法(new(),allocate(),superclass()等等),其中allocate()方法是new()方法的支撑方法。这几个方法可以创建对象并且可以把它们纳入到类体系结构中。

一个模块基本上就是一组实例方法,而类是增加了若干新功能(一个superclass()方法和一个new()方法)的模块。

模块和类的使用场景:

模块:希望它应该在别处被包含(include)时,或者当成命名空间时。

类:当希望被实例化或者继承时。

相关推荐