类 Class

扩展任何 Class 以包含 json_creatable? 方法。

Ruby 中的类是一等对象——每个类都是 Class 类的实例。

通常,您可以使用以下方式创建一个新类

class Name
 # some code describing the class behavior
end

创建新类时,会初始化一个 Class 类型的对象,并将其分配给一个全局常量(在本例中为 Name)。

当调用 Name.new 来创建一个新对象时,默认情况下会运行 Class 中的 new 方法。这可以通过覆盖 Class 中的 new 来演示。

class Class
  alias old_new new
  def new(*args)
    print "Creating a new ", self.name, "\n"
    old_new(*args)
  end
end

class Name
end

n = Name.new

产生

Creating a new Name

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

                         +---------+             +-...
                         |         |             |
         BasicObject-----|-->(BasicObject)-------|-...
             ^           |         ^             |
             |           |         |             |
          Object---------|----->(Object)---------|-...
             ^           |         ^             |
             |           |         |             |
             +-------+   |         +--------+    |
             |       |   |         |        |    |
             |    Module-|---------|--->(Module)-|-...
             |       ^   |         |        ^    |
             |       |   |         |        |    |
             |     Class-|---------|---->(Class)-|-...
             |       ^   |         |        ^    |
             |       +---+         |        +----+
             |                     |
obj--->OtherClass---------->(OtherClass)-----------...