What Is Polymorphism?
Polymorphism is the property in a programming language that allows objects of different types to be substituted for one another in program flow without needing to know ahead of time what the object’s type is.
Many people would take issue with that definition as overly simplistic. Indeed, most discussions about polymorphism are much more intricate because they get caught up in the syntax of a particular language and how you achieve polymorphism, as if it’s an epic battle. This leads to discussion of the places where you can have polymorphism, followed by what hoops you must jump through to get polymorphism. In Ruby, polymorphism is everywhere, so it’s much simpler.
Yes, polymorphism applies to methods as well as objects. For
example, we could define a method plus, which just applies + to two parameters:
def plus(a, b) a + b end
This method doesn’t care what the types of a and b
are. Method signatures are completely untyped. We also see polymorphism
in the + operator itself. As long as
it has meaning for the parameters, the method will work:
>> plus(1, 2)
=> 3
>> plus("hel", "lo")
=> "hello"
>> plus([1], [2])
=> [1, 2]We can also demonstrate polymorphism at the object level; through inheritance, subclasses can take on specialized behavior not found in the base class:
class Animal
def noise
raise "Noise not defined for #{self.class}"
end
end
class Dog < Animal
def noise
"Woof!"
end
end
class Cat < Animal
def noise
"Meow!"
end
endWe can now iterate over a list of animals ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access