Типы полиморфизма в Java [статический и динамический полиморфизм с примерами]
Опубликовано: 2021-06-18Оглавление
Что такое полиморфизм в Java?
Одной из важных концепций объектно-ориентированного программирования (ООП) является полиморфизм, означающий, что одно и то же действие может выполняться разными способами. Оно происходит от греческих слов: поли и морфы, означающие множество и формы. Различные формы существуют, когда они связаны через наследование.
Подобно наследованию, которое наследует методы и атрибуты от другого класса, полиморфизм применяет эти методы и выполняет другие задачи. Объект может принимать различные формы посредством полиморфизма.
То есть объект может выполнять разные операции в разных сценариях. Одно из наиболее распространенных применений полиморфизма в объектно-ориентированном программировании — это когда ссылка на родительский класс используется для ссылки на объект дочернего класса. Узнайте больше о различных концепциях и примерах ООП.
Полиморфизм в Java может быть достигнут тремя способами:
Переопределение метода: если суперкласс и подкласс состоят из одного и того же метода, то переопределение метода относится к процессу переопределения метода в суперклассе методом в подклассе. В результате один и тот же метод будет использоваться в разных условиях при выполнении разных операций.
Вывод программы:
Язык программирования Java
Общий английский язык
- Перегрузка метода. Под перегрузкой метода понимается процесс создания методов с одинаковыми именами, но с разными параметрами. Примеры включают: void func() {...}, void func(int a) {...}, float func(double a) {...}, float func(int a, float b) {...}.
Выход
**********
##########
- Перегрузка операторов. Перегрузка операторов — это концепция 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 тематических исследований для расширения ваших знаний и доступных инструментов и языков программирования для улучшения ваших практических навыков. Если у вас есть еще вопросы, связанные с курсом, напишите нам. Наша команда свяжется с вами.