С полиморфизмом вы можете вызывать одни и те же имена функций на нескольких объектах разных типов. Когда вы пишете программу, вы привязаны к методам типа, с которым вы программируете. Таким образом, способ получить максимальную функциональность - это программировать на своего рода общий тип. Этот общий тип описывает общие функции. Затем вы можете использовать любые конкретные типы, которые также содержат эти общие функции. То, как вы можете быть уверенным в том, что конкретные типы содержат эти общие функции, заключается в том, что определенные типы подписывают «контракт», говорящий, что они обещают содержать эти общие функции или путем использования им наследования. Этот контракт также называется интерфейсом.
Итак, когда вы программируете, вы должны знать имя функции. В противном случае, если вы вызываете функцию, которая не существует, ваша программа умирает. Полиморфизм позволяет нам быть на 100% уверенным, что разные типы объектов содержат одну и ту же функцию.