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
Object
if no parameter is given). -
#initialize_copy ⇒ Object
:nodoc:.
-
#new(args, ...) ⇒ Object
Calls
allocate
to create a new object of class’s class, then invokes that object’sinitialize
method, 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; |