Полиморфизм относится к способности объектов принимать различные формы. В Java это простая, но фундаментальная концепция объектно-ориентированного программирования. Чтобы понять полиморфизм, важно иметь четкое представление о наследовании и интерфейсах в Java.

Что такое полиморфизм?

Класс считается полиморфным, если он проходит более одного теста «является ли». Тест «есть-а» — это простой способ определить тип, к которому принадлежит класс; если класс принадлежит более чем к одному типу, то он считается полиморфным. Рассмотрим этот пример:

Класс Manager наследуется от класса Employee и, как и все классы в Java, также наследуется от класса Object. Следовательно:

Менеджерявляется менеджером

Менеджерявляется сотрудником

Менеджерявляется объектом

Поскольку класс Manager проходит более одного теста «является ли», он является полиморфным.

Примечание. Все классы в Java по своей природе полиморфны; объект любого класса всегда проходит как минимум два теста «является ли-а», так как он имеет свой собственный тип и тип Object (все классы наследуются от класса Object в Java).

Использование

Вам может быть интересно, когда нам понадобится использовать полиморфизм. Давайте рассмотрим сценарий; дела вашей компании идут исключительно хорошо, и вы решили выплатить премию в размере 5000 долларов каждому сотруднику. Ниже приведена простая программа, программно описывающая этот сценарий:

Поскольку все наши классы Manager, Receptionist, Designer и Developers наследуются от класса Employee; Если мы можем объявить наш listOfEmployees типом Employee, любой экземпляр, тип которого наследуется от класса Employee, может быть добавлен в список сотрудников.

Следовательно, полиморфизм может быть достигнут посредством наследования; мы можем использовать тип родительского класса (в данном случае Employee) в качестве ссылочной переменной для любых экземпляров дочернего класса. Это также может быть достигнуто за счет использования интерфейсов.