Type:
Class
Extends any Class to include json_creatable? method.
Classes in Ruby are first-class objects—each is an instance of class
Class
.
Typically, you create a new class by using:
1 2 3 | class Name # some class describing the class behavior end |
When a new class is created, an object of type Class is initialized and assigned to a global
constant (Name
in this case).
When Name.new
is called to create a new object, the
new
method in Class
is run by default. This can
be demonstrated by overriding new
in Class
:
1 2 3 4 5 6 7 8 9 10 11 12 | class Class alias oldNew new def new (*args) print "Creating a new " , self .name, "\n" oldNew(*args) end end class Name end n = Name. new |
produces:
1 | Creating a new Name |
Classes, modules, and objects are interrelated. In the diagram that follows, the vertical arrows represent inheritance, and the parentheses meta-classes. All metaclasses are instances of the class `Class'.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | +---------+ +-... | | | BasicObject-----|-->(BasicObject)-------|-... ^ | ^ | | | | | Object ---------|----->( Object )---------|-... ^ | ^ | | | | | +-------+ | +--------+ | | | | | | | | Module -|---------|--->( Module )-|-... | ^ | | ^ | | | | | | | | Class -|---------|---->( Class )-|-... | ^ | | ^ | | +---+ | +----+ | | obj--->OtherClass---------->(OtherClass)-----------... |