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_exec, #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_exec, #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.
1547 1548 1549 |
# File 'object.c', line 1547 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.
1581 1582 1583 |
# File 'object.c', line 1581 VALUE rb_obj_alloc(klass) VALUE klass; |
#inherited ⇒ Object (private)
Not documented
658 659 660 661 662 |
# File 'object.c', line 658 static VALUE rb_obj_dummy() { return Qnil; } |
#initialize_copy ⇒ Object
:nodoc:
110 111 112 |
# File 'class.c', line 110 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.
1622 1623 1624 |
# File 'object.c', line 1622 VALUE rb_class_new_instance(argc, argv, klass) int argc; |
#superclass ⇒ nil
Returns the superclass of class, or nil
.
File.superclass #=> IO
IO.superclass #=> Object
Object.superclass #=> nil
1648 1649 1650 |
# File 'object.c', line 1648 static VALUE rb_class_superclass(klass) VALUE klass; |