Полиморфизм позволяет выполнять задачу несколькими способами. Давайте разберем слово «полиморфизм» и посмотрим на него: «поли» означает «много», а «морфос» означает «фигуры».
Давайте посмотрим на пример. Предположим, у нас есть четыре ученика, и мы попросили их нарисовать фигуру. Все четыре могут рисовать разные фигуры, такие как круг, треугольник и прямоугольник.
Мы увидим подробное объяснение с некоторыми примерами программ о полиморфизме в посте, посвященном полиморфизму.
В Java существует два типа полиморфизма
1. Полиморфизм времени компиляции (статическое связывание) — перегрузка метода
2. Полиморфизм во время выполнения (динамическое связывание) — переопределение метода
Мы можем реализовать полиморфизм с помощью «перегрузки метода» и «переопределения метода».
Я рекомендую вам просмотреть следующие сообщения.
Перегрузка метода : (статический полиморфизм/полиморфизм времени компиляции)
Переопределение метода: (динамический полиморфизм/полиморфизм времени выполнения)
Давайте рассмотрим несколько практических примеров как полиморфизма времени компиляции, так и полиморфизма времени выполнения.
Полиморфизм времени компиляции:
123456789101112131415161718192021222324 | полиморфизм пакетов CompileTime; открытый класс CompileTimePolymorphismClass {void myMethod (int a) {System.out.println («значение a равно» + a);} void myMethod (int a, int b) {System.out.println («значение a равно» + a + ” и значение b равно ” + b);} void myMethod (String a) {System.out.println (a);} public static void main (String [] args) {CompileTimePolymorphismClass obj = new CompileTimePolymorphismClass() ;obj.myMethod(10);obj.myMethod(10, 20);obj.myMethod(“Я – строка”);} } |
Вывод:
123 | значение a равно 10значение a равно 10 и значение b равно 20I am a String |
Полиморфизм времени выполнения:
123456789 | package polymorphismRunTime; открытый класс MethodOverridingParentClass {public void myMethod(){System.out.println(“Я метод из родительского класса”);} } |
12345678910111213141516 | package polymorphismRunTime; открытый класс MethodOverridingChildClass extends MethodOverridingParentClass{public void myMethod(){System.out.println(“Я метод из дочернего класса”);}public static void main(String [] args){MethodOverridingParentClass obj = new MethodOverridingChildClass();//Он вызывает метод дочернего класса myMethod()obj.myMethod();}} |
Вывод:
1 | Я метод из дочернего класса |
TAG: qa