Object Creation and Initialization
Objects are typically created in Ruby by calling the new
method of their class. This section
explains exactly how that works, and it also explains other mechanisms
(such as cloning and unmarshaling) that create objects. Each subsection
explains how you can customize the
initialization of the newly created objects.
new, allocate, and initialize
Every class inherits the class method new
. This method has two jobs: it must
allocate a new object—actually bring the object into existence—and it
must initialize the object. It delegates these two jobs to the
allocate
and initialize
methods, respectively. If the
new
method were actually written in
Ruby, it would look something like this:
def new(*args) o = self.allocate # Create a new object of this class o.initialize(*args) # Call the object's initialize method with our args o # Return new object; ignore return value of initialize end
allocate
is an instance
method of Class
, and it is
inherited by all class objects. Its purpose is to create a new
instance of the class. You can call this method yourself to create
uninitialized instances of a class. But don’t try to override it; Ruby
always invokes this method directly, ignoring any overriding versions
you may have defined.
initialize
is an instance
method. Most classes need one, and every class that extends a class
other than Object
should use
super
to chain to the initialize
method of the superclass. The
usual job of the initialize
method is to create instance ...
Get The Ruby Programming Language now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.