logo

Polimorfizm w Javie

Słowo polimorfizm oznacza posiadanie wielu form. W prostych słowach możemy zdefiniować polimorfizm Java jako zdolność komunikatu do wyświetlania w więcej niż jednej formie. W tym artykule dowiemy się, czym jest polimorfizm i jego rodzaj.

Prawdziwa ilustracja polimorfizmu w Javie : Osoba w tym samym czasie może mieć różne cechy. Tak jak mężczyzna jest jednocześnie ojcem, mężem i pracownikiem. Zatem ta sama osoba zachowuje się inaczej w różnych sytuacjach. Nazywa się to polimorfizmem.

Co to jest polimorfizm w Javie?

Polimorfizm jest uważany za jedną z ważnych cech programowania obiektowego. Polimorfizm pozwala nam wykonać jedną akcję na różne sposoby. Innymi słowy, polimorfizm pozwala zdefiniować jeden interfejs i mieć wiele implementacji. Słowo poli oznacza wiele, a morphs oznacza formy, więc oznacza wiele form.



Rodzaje polimorfizmu Java

W Javie polimorfizm dzieli się głównie na dwa typy:

  • Polimorfizm w czasie kompilacji
  • Polimorfizm środowiska wykonawczego

Polimorfizm czasu kompilacji w Javie

Nazywa się to również polimorfizmem statycznym. Ten typ polimorfizmu osiąga się poprzez przeciążenie funkcji lub przeciążenie operatora.

rotacja drzewa avl

Notatka: Ale Java nie obsługuje przeciążania operatora.

Polimorfizm Javy

Przeciążenie metody

Gdy istnieje wiele funkcji o tej samej nazwie, ale różnych parametrach, wówczas mówimy, że te funkcje są przeciążony . Funkcje mogą zostać przeciążone poprzez zmianę liczby argumentów i/lub zmianę typu argumentów.

Przykład 1:

Jawa




// 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>));> >}> }>

>

>

Wyjście

8 34.65>

Przykład 2:

Jawa

odlany w sql




// 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>));> >}> }>

>

>

Wyjście

8 42>

Podtypy polimorfizmu w czasie kompilacji

1. Przeciążenie funkcji

Jest to funkcja w języku C++, w której wiele funkcji może mieć tę samą nazwę, ale z różnymi listami parametrów. Kompilator zdecyduje, którą funkcję wywołać, na podstawie liczby i typów argumentów przekazanych do funkcji.

2. Przeciążenie operatora

Jest to funkcja języka C++, dzięki której operatorom takim jak +, -, * itp. można nadać dodatkowe znaczenie po zastosowaniu do typów danych zdefiniowanych przez użytkownika.

3. Szablon

jest to potężna funkcja w C++, która pozwala nam pisać ogólne funkcje i klasy. Szablon to plan tworzenia rodziny funkcji lub klas.

Polimorfizm środowiska wykonawczego w Javie

Nazywa się to również dynamiczną wysyłką metody. Jest to proces, w którym wywołanie funkcji przesłoniętej metody jest rozwiązywane w czasie wykonywania. Ten typ polimorfizmu osiąga się poprzez przesłonięcie metody. Zastąpienie metody Z drugiej strony ma to miejsce, gdy klasa pochodna ma definicję jednej z funkcji składowych klasy bazowej. Mówi się, że jest to funkcja podstawowa zastąpiony .

Przykład

Jawa




// 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();> >}> }>

>

>

Wyjście

subclass1 subclass2>

Wyjaśnienie powyższego kodu:

W tym programie, gdy tworzony jest obiekt klasy potomnej, wywoływana jest metoda znajdująca się wewnątrz klasy potomnej. Dzieje się tak, ponieważ metoda w klasie nadrzędnej jest zastępowana przez klasę podrzędną. Ponieważ metoda została zastąpiona, metoda ta ma większy priorytet niż metoda nadrzędna w klasie podrzędnej. Zatem wykonywane jest ciało wewnątrz klasy potomnej.

Podtyp polimorfizmu w czasie wykonywania

I. Funkcje wirtualne

Pozwala obiektowi klasy pochodnej zachowywać się tak, jakby był obiektem klasy bazowej. Klasa pochodna może zastąpić funkcję wirtualną klasy bazowej, aby zapewnić własną implementację. Wywołanie funkcji jest rozpoznawane w czasie wykonywania, w zależności od rzeczywistego typu obiektu.

oś serwera sql

Schemat –

Rodzaje polimorfizmu w Javie

Polimorfizm w Javie to koncepcja, która pozwala traktować obiekty różnych klas jako obiekty wspólnej klasy. Umożliwia obiektom zachowanie się w różny sposób w zależności od ich konkretnego typu klasy.

Zalety polimorfizmu w Javie

  1. Zwiększa możliwość ponownego użycia kodu, umożliwiając traktowanie obiektów różnych klas jako obiektów wspólnej klasy.
  2. Poprawia czytelność i łatwość konserwacji kodu poprzez zmniejszenie ilości kodu, który należy napisać i utrzymać.
  3. Obsługuje wiązanie dynamiczne, umożliwiając wywołanie poprawnej metody w czasie wykonywania, w oparciu o rzeczywistą klasę obiektu.
  4. Umożliwia traktowanie obiektów jako jednego typu, co ułatwia pisanie ogólnego kodu, który może obsługiwać obiekty różnych typów.

Wady polimorfizmu w Javie

  1. Może utrudnić zrozumienie zachowania obiektu, zwłaszcza jeśli kod jest złożony.
  2. Może to prowadzić do problemów z wydajnością, ponieważ zachowanie polimorficzne może wymagać dodatkowych obliczeń w czasie wykonywania.