Constructors in Ruby: Creating Objects the Right Way

Introduction to Constructors

Constructors are a fundamental concept in Ruby and many other object-oriented programming languages. They are methods responsible for initializing objects when they are created from a class. In this guide, we'll explore how to define constructors in Ruby and create objects the right way.

Default Constructor

In Ruby, every class has a default constructor called initialize. It is automatically called when an object is created from the class. Here's an example:

class Person
def initialize(name, age)
@name = name
@age = age
person ="Alice", 30)

In this example, the initialize method is called when a Person object is created, and it initializes the object's attributes.

Custom Constructors

You can define custom constructors in Ruby by creating class methods. These methods can be used to provide alternative ways to create objects. Here's an example:

class Rectangle
def initialize(width, height)
@width = width
@height = height
def self.square(side_length)
new(side_length, side_length)
rectangle =, 8)
square = Rectangle.square(6)

In this example, the Rectangle class defines a custom constructor method self.square that simplifies the creation of square objects.

Multiple Constructors

You can define multiple constructors in a class to provide various ways of creating objects. Each constructor can have a different set of parameters. Here's an example:

class Circle
def initialize(radius)
@radius = radius
def self.from_diameter(diameter)
new(diameter / 2)
circle1 =
circle2 = Circle.from_diameter(10)

In this example, the Circle class defines both the default constructor and a custom constructor from_diameter.


Constructors play a crucial role in object initialization in Ruby. By understanding how to define and use constructors, you can create objects with the appropriate initial state and provide flexibility in object creation.

Practice defining and using constructors in your Ruby programs to become a proficient Ruby developer. For more information, refer to the official Ruby documentation.

Happy coding!