Inheritance is a crucial concept in Ruby's object-oriented programming paradigm. It allows classes to inherit attributes and methods from other classes, promoting code reuse and establishing hierarchical relationships between objects.
In Ruby, inheritance enables a class (subclass) to inherit properties and behaviors from another class (superclass). This mechanism facilitates the creation of specialized classes based on more general ones, fostering a hierarchical structure in your code.
To implement inheritance in Ruby, use the <
symbol when defining a class:
class ChildClass < ParentClass
# Child class definition
end
Let's explore a practical example of Ruby inheritance using an animal hierarchy:
class Animal
def speak
"I'm an animal!"
end
end
class Dog < Animal
def speak
"Woof!"
end
end
class Cat < Animal
def speak
"Meow!"
end
end
animal = Animal.new
dog = Dog.new
cat = Cat.new
puts animal.speak # Output: I'm an animal!
puts dog.speak # Output: Woof!
puts cat.speak # Output: Meow!
In this example, Dog
and Cat
inherit from Animal
. They override the speak
method to provide their own implementations.
Ruby Method Overriding is a key aspect of inheritance. It allows subclasses to provide a specific implementation of a method that is already defined in the superclass.
To call a method from the superclass within a subclass, use the super
keyword:
class Bird < Animal
def speak
super + " But I'm a bird!"
end
end
bird = Bird.new
puts bird.speak # Output: I'm an animal! But I'm a bird!
Ruby does not support multiple inheritance directly. However, it provides Ruby Modules and Ruby Mixins as alternatives to achieve similar functionality.
Ruby inheritance is a powerful tool for creating well-structured, maintainable code. By understanding and applying inheritance principles, you can build more efficient and organized Ruby applications. Remember to use it judiciously and consider alternatives like composition when inheritance might lead to overly complex class hierarchies.