Типы полиморфизма в Java [статический и динамический полиморфизм с примерами]

Опубликовано: 2021-06-18

Оглавление

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

Одной из важных концепций объектно-ориентированного программирования (ООП) является полиморфизм, означающий, что одно и то же действие может выполняться разными способами. Оно происходит от греческих слов: поли и морфы, означающие множество и формы. Различные формы существуют, когда они связаны через наследование.

Подобно наследованию, которое наследует методы и атрибуты от другого класса, полиморфизм применяет эти методы и выполняет другие задачи. Объект может принимать различные формы посредством полиморфизма.

То есть объект может выполнять разные операции в разных сценариях. Одно из наиболее распространенных применений полиморфизма в объектно-ориентированном программировании — это когда ссылка на родительский класс используется для ссылки на объект дочернего класса. Узнайте больше о различных концепциях и примерах ООП.

Полиморфизм в Java может быть достигнут тремя способами:

Переопределение метода: если суперкласс и подкласс состоят из одного и того же метода, то переопределение метода относится к процессу переопределения метода в суперклассе методом в подклассе. В результате один и тот же метод будет использоваться в разных условиях при выполнении разных операций.

Вывод программы:

Язык программирования Java

Общий английский язык

  1. Перегрузка метода. Под перегрузкой метода понимается процесс создания методов с одинаковыми именами, но с разными параметрами. Примеры включают: void func() {...}, void func(int a) {...}, float func(double a) {...}, float func(int a, float b) {...}.

Выход

**********

##########

  1. Перегрузка операторов. Перегрузка операторов — это концепция Java, при которой оператор ведет себя по-разному с разными операндами. Примеры включают:
  • Оператор «+» можно использовать как при сложении чисел, так и при конкатенации строк.
Числовое сложение Конкатенация строк
инт а = 5;

интервал б = 6;

целая сумма = а + б; // Выход = 11

Первая строка = «Python»;

String second = «Программирование»;

имя = первое + второе; // Вывод = программирование на Python

  • Операторы &,| и ! может использоваться для логической и побитовой перегрузки.

Типы полиморфизма в Java

Объектно - ориентированное программирование фокусируется на четырех основных концепциях: абстракции, инкапсуляции, наследовании и полиморфизме. Полиморфизм — это способность по-разному обрабатывать объекты в зависимости от их класса и типов данных.

В Java существует два типа полиморфизма : полиморфизм времени компиляции и полиморфизм времени выполнения в java . Этот полиморфизм Java также называют статическим полиморфизмом и динамическим полиморфизмом.

1. Статический полиморфизм (или полиморфизм времени компиляции)

Как и в большинстве других языков программирования ООП, полиморфизм Java позволяет включать в класс несколько методов. Методы используют одно и то же имя, но параметры различаются. Это представляет собой статический полиморфизм. Этот полиморфизм разрешается во время компиляции и достигается за счет перегрузки метода. Предусмотрены три критерия, по которым наборы параметров должны различаться:

  • Количество параметров должно варьироваться.
  • Типы параметров должны быть разными.
  • Другой порядок параметров. Например, если метод принимает строку и длинное значение, а другой метод принимает длинное значение и строку. Однако этот тип заказа затрудняет понимание API.

Из-за разницы в параметрах у каждого метода своя сигнатура. Компилятор Java знает, какой метод вызывается.

Изучайте онлайн-курсы по программному обеспечению от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Пример статического полиморфизма

Одним из способов поддержки статического полиморфизма в Java является перегрузка методов. Пример, показывающий случай перегрузки метода в статическом полиморфизме, показан ниже:

Пример:

класс SimpleCalculator

{

int добавить (int a, int b)

{

вернуть а+б;

}

int добавить (int a, int b, int c)

{

вернуть а+б+с;

}

}

демонстрация публичного класса

{

public static void main (String args [])

{

SimpleCalculator obj = новый SimpleCalculator();

System.out.println(obj.add(25, 25));

System.out.println(obj.add(25, 25, 30));

}

}

Вывод программы

50

80

2. Динамический полиморфизм (или полиморфизм времени выполнения в Java)

В этой форме полиморфизма в java компилятор не определяет метод, который должен быть выполнен. Это виртуальная машина Java (JVM), которая выполняет процесс во время выполнения. Динамический полиморфизм относится к процессу, когда вызов переопределенного процесса разрешается во время выполнения. Ссылочная переменная суперкласса вызывает переопределенный метод. Методы, реализованные как в подклассе, так и в суперклассе, имеют разные функциональные возможности, но имеют одно и то же имя.

Прежде чем понять концепцию полиморфизма во время выполнения, крайне важно понять процесс Upcasting. Повышение приведения относится к процессу, в котором на объект дочернего класса ссылается ссылочная переменная суперкласса. Узнайте о полиморфизме в PHP.

Пример динамического полиморфизма (или времени выполнения)

Пример1:

Создаются два класса Bike и Splendor, а класс Splendor расширяет класс Bike, переопределяя его метод run(). Метод run() вызывается ссылочной переменной родительского класса. Поскольку метод подкласса переопределяет метод родительского класса; метод подкласса вызывается во время выполнения.

Программа

класс велосипед{

недействительный запуск () {System.out.println («работает»);}

}

класс Splendor расширяет Bike{

void run(){System.out.println("безопасно пройти 30 км");}

публичный статический недействительным основным (строковые аргументы []) {

Bike b = new Splendor();//обновление

б.выполнить();

}

}

Результат: безопасно пройти 60 км .

Пример 2

Создаются два класса с именами «ABC» и «XYZ», где XYZ — дочерний класс, а ABC — родительский класс. Здесь метод myMethod() родительского класса переопределяется дочерним классом. Объект дочернего класса присваивается ссылке на родительский класс.

Программа:

класс АВС{

общественный недействительным мой метод () {

System.out.println("Переопределенный метод");

}

}

открытый класс XYZ расширяет ABC{

общественный недействительным мой метод () {

System.out.println («Метод переопределения»);

}

public static void main (String args []) {

ABC obj = новый XYZ();

объект.МойМетод();

}

}

Выход

Метод переопределения

Заключение

Концепция полиморфизма в java — одна из самых полезных функций объектно-ориентированного программирования. Кроме того, возможность вызывать метод как в статике, так и во время выполнения расширяет возможности его применения.

Идея, лежащая в основе концепции полиморфизма, заключается в гибкости. Кроме того, возможность обрабатывать большое количество объектов в одной ссылочной переменной немного упрощает кодирование. Поэтому эту концепцию следует использовать в повседневных задачах кодирования и учитывать ее эффективность.

Если вы хотите узнать больше о программных технологиях, их разработке и механизмах, лежащих в их основе, вы можете проверить курс Executive PG Program in Software Development — Specialization in Full Stack Development, предлагаемый upGrad. Специализированный курс представляет собой 23-недельную онлайн-программу, предлагающую более 300 тематических исследований для расширения ваших знаний и доступных инструментов и языков программирования для улучшения ваших практических навыков. Если у вас есть еще вопросы, связанные с курсом, напишите нам. Наша команда свяжется с вами.

Планируйте свою карьеру в области разработки программного обеспечения прямо сейчас.

Подать заявку на участие в программе Executive PG по разработке программного обеспечения от IIIT-B