Головна > Блог > questions > Что такое полиморфизм в java?
03 Кві 19

Тема, которая касается полиморфизма в java обычно довольно тяжело дается начинающим программистам, однако игнорировать ее прост не возможно т.к. она является одной из базовых тем в java. Так что же все таки собой являет полиморфизм в java? Если говорить “человеческим языком” в контексте java, то полиморфизм — это возможность одного объекта принимать различную типизацию, или соответствовать различным типам. Что имеется ввиду? Давайте посмотрим на примере, который довольно просто покажет, что же такое полиморфизм в java.

 За основу нашего примера полиморфизма будет взят класс Human, у которого будут 2 поля — имя и возраст, а так же минимальный набор конструкторов, геттеров и сеттеров и метод toString() для человекоподобного отображения нашего объекта в консоли.

А теперь создадим интерфейс Singer у которого будет абстрактный метод sing(), а также интерфейс Runner у которого будет оглашен абстрактный метод run().

Целиком этот код будет выглядеть следующим образом:

А теперь попробуем имплементировать интерфейс Singer нашему Human. Сразу же станет необходимым определить метод sing() внутри нашего Human и описать его логику.

Теперь начнется самое интересное. Поскольку мы реализовали интерфейс Singer в нашем Human, это позволят  экземпляру (объекту) класса Human дополнительно принимать обличие типа Singer. Но почему? Все потому, что при реализации интерфейса, он обязывает нас реализовать все его абстрактные методы, и именно это является единственным критерием соответствия типу Singer (ну или любому другому интерфейсу… все зависит от ситуации). А это означает, что если мы соответствуем какому-либо типу, мы можем принять его типизацию.

 

Но на этом еще не все. Давайте реализуем еще один интерфейс в нашем Human. Тогда наш класс будет выглядеть следующим образом :

Как видим появился новый метод run(), который мы были вынуждены реализовать поскольку иплементировали интерфейс Runner. Что же мы получим в конце?

Как видно, теперь наши объект human типа Human, имеет возможность быть типом Singer , а так же Runnable. Иными словами у нашего объекта теперь есть много видов типизации…т.е. “поли типизация”, в свою очередь тип – это форма (морф от греческого), соответственно “поли типизацию” можем пере назвать на …..(барабанная дробь) – полиморфизм.

Поділитися