Inheritance

In Ruby, inheritance describes the relation between classes.

Syntax

Inheritance is expressed when the < is used to connect the parent class, Animal, with the child class, Dog:

class Animal
def initialize(species)
@species = species
end
def species
@species
end
end
class Dog < Animal
def initialize(species, name)
super(species)
@name = name
end
end
snoop = Dog.new("Long-Beach Labrador", "Calvin")
puts snoop.species # Output: Long-Beach Labrador

The Dog class inherits all the methods from its parent Animal class, including .species.

Overriding Methods

An inheriting child class can override methods defined in its parent and replace with code specific to it:

class Animal
def initialize(species)
@species = species
end
def species
@species
end
def make_sound
"The animal made a sound that was hard to tell."
end
end
class Dog < Animal
def initialize(species, name)
super(species)
@name = name
end
def name
@name
end
def make_sound
"Bark!"
end
end
snoop = Dog.new("Long-Beach Labrador", "Calvin")
puts snoop.make_sound # Output: Bark!

The .make_sound method from Animal was overridden in Dog with a return string specific to that class.

Edit this page on GitHub

Contributors

Interested in helping build Docs? Read the Contribution Guide or share your feedback.

Learn Ruby on Codecademy