logo

Поліморфізм в Java

Слово поліморфізм означає наявність багатьох форм. Простими словами, ми можемо визначити поліморфізм Java як здатність повідомлення відображатися в більш ніж одній формі. У цій статті ми дізнаємося, що таке поліморфізм і його тип.

Реальна ілюстрація поліморфізму в Java : Людина одночасно може мати різні характеристики. Як чоловік є водночас і батьком, і чоловіком, і працівником. Таким чином, одна й та сама людина має різну поведінку в різних ситуаціях. Це називається поліморфізмом.

Що таке поліморфізм у Java?

Поліморфізм вважається однією з важливих особливостей об'єктно-орієнтованого програмування. Поліморфізм дозволяє нам виконувати одну дію різними способами. Іншими словами, поліморфізм дозволяє визначити один інтерфейс і мати кілька реалізацій. Слово полі означає багато, а морфи означає форми, тому воно означає багато форм.



Типи поліморфізму Java

У Java поліморфізм в основному поділяється на два типи:

  • Поліморфізм під час компіляції
  • Поліморфізм виконання

Поліморфізм під час компіляції в Java

Він також відомий як статичний поліморфізм. Цей тип поліморфізму досягається шляхом перевантаження функцій або операторів.

Примітка: Але Java не підтримує перевантаження операторів.

Поліморфізм Java

Перевантаження методу

Якщо існує кілька функцій з однаковою назвою, але різними параметрами, то ці функції називаються такими перевантажений . Функції можуть бути перевантажені зміною кількості аргументів або/або зміною типу аргументів.

приклад 1:

Java


якщо ще в java



// Java Program for Method overloading> // By using Different Types of Arguments> // Class 1> // Helper class> class> Helper {> >// Method with 2 integer parameters> >static> int> Multiply(>int> a,>int> b)> >{> >// Returns product of integer numbers> >return> a * b;> >}> >// Method 2> >// With same name but with 2 double parameters> >static> double> Multiply(>double> a,>double> b)> >{> >// Returns product of double numbers> >return> a * b;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>5.5>,>6.3>));> >}> }>

>

>

Вихід

8 34.65>

приклад 2:

Java




словник сортування python
// Java program for Method Overloading> // by Using Different Numbers of Arguments> // Class 1> // Helper class> class> Helper {> >// Method 1> >// Multiplication of 2 numbers> >static> int> Multiply(>int> a,>int> b)> >{> >// Return product> >return> a * b;> >}> >// Method 2> >// // Multiplication of 3 numbers> >static> int> Multiply(>int> a,>int> b,>int> c)> >{> >// Return product> >return> a * b * c;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>2>,>7>,>3>));> >}> }>

>

>

Вихід

8 42>

Підтипи поліморфізму під час компіляції

1. Перевантаження функцій

Це функція C++, де кілька функцій можуть мати однакові назви, але з різними списками параметрів. Компілятор вирішить, яку функцію викликати на основі кількості та типів аргументів, переданих функції.

2. Перевантаження оператора

Це функція C++, де такі оператори, як +, -, * тощо, можуть мати додаткові значення, коли вони застосовуються до типів даних, визначених користувачем.

3. Шаблон

це потужна функція в C++, яка дозволяє нам писати загальні функції та класи. Шаблон — це план для створення сімейства функцій або класів.

Поліморфізм часу виконання в Java

Він також відомий як диспетчеризація динамічного методу. Це процес, у якому виклик функції перевизначеного методу вирішується під час виконання. Цей тип поліморфізму досягається шляхом перевизначення методу. Перевизначення методу , з іншого боку, виникає, коли похідний клас має визначення для однієї з функцій-членів базового класу. Ця базова функція називається перевизначено .

приклад

Java

не дорівнює mysql




// Java Program for Method Overriding> // Class 1> // Helper class> class> Parent {> >// Method of parent class> >void> Print()> >{> >// Print statement> >System.out.println(>'parent class'>);> >}> }> // Class 2> // Helper class> class> subclass1>extends> Parent {> >// Method> >void> Print() { System.out.println(>'subclass1'>); }> }> // Class 3> // Helper class> class> subclass2>extends> Parent {> >// Method> >void> Print()> >{> >// Print statement> >System.out.println(>'subclass2'>);> >}> }> // Class 4> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of class 1> >Parent a;> >// Now we will be calling print methods> >// inside main() method> >a =>new> subclass1();> >a.Print();> >a =>new> subclass2();> >a.Print();> >}> }>

>

if else if else java

>

Вихід

subclass1 subclass2>

Пояснення наведеного вище коду:

Тут, у цій програмі, коли створюється об’єкт дочірнього класу, тоді викликається метод у дочірньому класі. Це тому, що метод у батьківському класі перевизначений дочірнім класом. Оскільки метод перевизначено, цей метод має більший пріоритет, ніж батьківський метод у дочірньому класі. Отже, тіло всередині дочірнього класу виконано.

Підтип поліморфізму під час виконання

i. Віртуальні функції

Це дозволяє об'єкту похідного класу поводитися так, ніби він був об'єктом базового класу. Похідний клас може замінити віртуальну функцію базового класу, щоб забезпечити власну реалізацію. Виклик функції вирішується під час виконання, залежно від фактичного типу об’єкта.

Діаграма –

Типи поліморфізму в Java

Поліморфізм у Java — це концепція, яка дозволяє розглядати об’єкти різних класів як об’єкти спільного класу. Це дозволяє об’єктам поводитися по-різному залежно від їх конкретного типу класу.

Переваги поліморфізму в Java

  1. Підвищує можливість багаторазового використання коду, дозволяючи розглядати об’єкти різних класів як об’єкти спільного класу.
  2. Покращує читабельність і зручність обслуговування коду, зменшуючи кількість коду, який потрібно писати та підтримувати.
  3. Підтримує динамічне зв’язування, що дозволяє викликати правильний метод під час виконання на основі фактичного класу об’єкта.
  4. Дозволяє розглядати об’єкти як один тип, що полегшує написання загального коду, який може обробляти об’єкти різних типів.

Недоліки поліморфізму в Java

  1. Може ускладнити розуміння поведінки об’єкта, особливо якщо код складний.
  2. Це може призвести до проблем із продуктивністю, оскільки поліморфна поведінка може потребувати додаткових обчислень під час виконання.