Class: Class
Overview
Classes in Ruby are first-class objects—each is an instance of class Class.
When a new class is created (typically using class Name ... end), an object of type Class is created 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:
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:
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’.
                         +------------------+
                         |                  |
           Object---->(Object)              |
            ^  ^        ^  ^                |
            |  |        |  |                |
            |  |  +-----+  +---------+      |
            |  |  |                  |      |
            |  +-----------+         |      |
            |     |        |         |      |
     +------+     |     Module--->(Module)  |
     |            |        ^         ^      |
OtherClass-->(OtherClass)  |         |      |
                           |         |      |
                         Class---->(Class)  |
                           ^                |
                           |                |
                           +----------------+
  Instance Method Summary collapse
- 
  
    
      #allocate  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Allocates space for a new object of class’s class.
 - 
  
    
      #inherited  ⇒ Object 
    
    
  
  
  
  
  private
  
  
  
  
    
Not documented.
 - 
  
    
      #new(super_class = Object)  ⇒ Class 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Creates a new anonymous (unnamed) class with the given superclass (or
Objectif no parameter is given). - 
  
    
      #initialize_copy  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #new(args, ...)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Calls
allocateto create a new object of class’s class, then invokes that object’sinitializemethod, passing it args. - 
  
    
      #superclass  ⇒ nil 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the superclass of class, or
nil. 
Methods inherited from Module
#<, #<=, #<=>, #==, #===, #>, #>=, #alias_method, #ancestors, #append_features, #attr, #attr_accessor, #attr_reader, #attr_writer, #autoload, #autoload?, #class_eval, #class_variable_defined?, #class_variable_get, #class_variable_set, #class_variables, #const_defined?, #const_get, #const_missing, #const_set, constants, #constants, #define_method, #extend_object, #extended, #freeze, #include, #include?, #included, #included_modules, #instance_method, #instance_methods, #method_added, #method_defined?, #method_removed, #method_undefined, #module_eval, #module_function, #name, nesting, #private, #private_class_method, #private_instance_methods, #private_method_defined?, #protected, #protected_instance_methods, #protected_method_defined?, #public, #public_class_method, #public_instance_methods, #public_method_defined?, #remove_class_variable, #remove_const, #remove_method, #to_s, #undef_method
Constructor Details
#new(super_class = Object) ⇒ Class
Creates a new anonymous (unnamed) class with the given superclass (or Object if no parameter is given). You can give a class a name by assigning the class object to a constant.
      1510 1511 1512  | 
    
      # File 'object.c', line 1510 static VALUE rb_class_initialize(argc, argv, klass) int argc;  | 
  
Instance Method Details
#allocate ⇒ Object
Allocates space for a new object of class’s class. The returned object must be an instance of class.
      1544 1545 1546  | 
    
      # File 'object.c', line 1544 VALUE rb_obj_alloc(klass) VALUE klass;  | 
  
#inherited ⇒ Object (private)
Not documented
      630 631 632 633 634  | 
    
      # File 'object.c', line 630
static VALUE
rb_obj_dummy()
{
    return Qnil;
}
     | 
  
#initialize_copy ⇒ Object
:nodoc:
      90 91 92  | 
    
      # File 'class.c', line 90 VALUE rb_class_init_copy(clone, orig) VALUE clone, orig;  | 
  
#new(args, ...) ⇒ Object
Calls allocate to create a new object of class’s class, then invokes that object’s initialize method, passing it args. This is the method that ends up getting called whenever an object is constructed using .new.
      1585 1586 1587  | 
    
      # File 'object.c', line 1585 VALUE rb_class_new_instance(argc, argv, klass) int argc;  |