O'Reilly logo

The Ruby Programming Language by David Flanagan, Yukihiro Matsumoto

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required