Rodzaje polimorfizmu w Javie [polimorfizm statyczny i dynamiczny z przykładami]

Opublikowany: 2021-06-18

Spis treści

Co to jest polimorfizm w Javie?

Jednym z ważnych pojęć w programowaniu zorientowanym obiektowo (OOP) jest polimorfizm, który oznacza, że ​​pojedyncza akcja może być wykonana na różne sposoby. Pochodzi od greckich słów: poly i morphs oznaczające wiele i formy. Różne formy istnieją, gdy są powiązane poprzez dziedziczenie.

Podobnie jak dziedziczenie, które dziedziczy metody i atrybuty z innej klasy, polimorfizm stosuje te metody i wykonuje różne zadania. Obiekt może przybierać różne formy dzięki polimorfizmowi.

Oznacza to, że jednostka może wykonywać różne operacje w różnych scenariuszach. Jednym z najczęstszych zastosowań polimorfizmu w programowaniu zorientowanym obiektowo jest użycie odwołania do klasy nadrzędnej w celu odniesienia się do obiektu klasy podrzędnej. Przeczytaj więcej o różnych koncepcjach i przykładach OOP.

Polimorfizm w Javie można osiągnąć trzema metodami:

Zastępowanie metody: Jeśli nadklasa i podklasa składają się z tej samej metody, zastępowanie metody odnosi się do procesu zastępowania metody w nadklasie przez metodę z podklasy. W rezultacie ta sama metoda będzie stosowana w różnych warunkach wykonując różne operacje.

Wyjście programu:

Język programowania Java

Wspólny język angielski

  1. Przeciążanie metod: Przeciążanie metod odnosi się do procesu tworzenia metod o tej samej nazwie, ale o różnych parametrach. Przykłady: void func() { … }, void func(int a) { … }, float func(double a) { … }, float func(int a, float b) { … }.

Wyjście

**********

##########

  1. Przeciążanie operatorów: Przeciążanie operatorów to koncepcja w Javie, w której operator zachowuje się inaczej z różnymi operandami. Przykłady zawierają:
  • Operatora „+” można używać zarówno przy dodawaniu liczb, jak i łączeniu ciągów.
Dodawanie liczbowe Łączenie ciągów
int a = 5;

intb = 6;

suma int = a + b; // Wyjście = 11

Pierwszy ciąg = „Python”;

Drugi ciąg znaków = „Programowanie”;

nazwa = pierwsza + druga; // Wyjście = programowanie w Pythonie

  • Operatory &,| i ! może służyć do logicznego i bitowego przeciążania.

Rodzaje polimorfizmu w Javie

Programowanie zorientowane obiektowo skupia się na czterech podstawowych pojęciach, tj. abstrakcji, enkapsulacji, dziedziczeniu i polimorfizmie. Polimorfizm to zdolność do przetwarzania obiektów w różny sposób na podstawie ich klasy i typów danych.

Istnieją dwa rodzaje polimorfizmu w Javie : polimorfizm w czasie kompilacji i polimorfizm w czasie wykonywania w Javie . Ten polimorfizm Java jest również określany jako polimorfizm statyczny i polimorfizm dynamiczny.

1. Polimorfizm statyczny (lub polimorfizm czasu kompilacji)

Podobnie jak większość innych języków programowania OOP, polimorfizm Javy pozwala na włączenie wielu metod do klasy. Metody mają tę samą nazwę, ale parametr jest inny. Reprezentuje to polimorfizm statyczny. Ten polimorfizm jest rozwiązywany w czasie kompilatora i jest osiągany przez przeciążenie metody. Podano trzy kryteria, według których zestawy parametrów muszą się różnić:

  • Liczba parametrów powinna się różnić.
  • Typy parametrów powinny być różne.
  • Inna kolejność parametrów. Na przykład, jeśli metoda akceptuje ciąg znaków i ciąg znaków, podczas gdy druga metoda akceptuje ciąg i ciąg znaków. Jednak tego typu kolejność utrudnia interfejsowi API zrozumienie.

Ze względu na różnicę parametrów każda metoda ma inną sygnaturę. Kompilator Javy ma pojęcie o tym, która metoda jest wywoływana.

Ucz się kursów oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Przykład statycznego polimorfizmu

Jednym ze sposobów, w jaki Java obsługuje polimorfizm statyczny, jest przeciążanie metod. Przykład pokazujący przypadek przeciążenia metody w polimorfizmie statycznym przedstawiono poniżej:

Przykład:

klasa Prosty Kalkulator

{

int dodaj(int a, int b)

{

zwróć a+b;

}

int add(int a, int b, int c)

{

zwróć a+b+c;

}

}

Demo klasy publicznej

{

public static void main(String args[])

{

SimpleCalculator obj = new SimpleCalculator();

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

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

}

}

Wyjście programu

50

80

2. Dynamiczny polimorfizm (lub polimorfizm w czasie wykonywania w Javie)

W tej formie polimorfizmu w java kompilator nie określa metody do wykonania. Jest to wirtualna maszyna języka Java (JVM), która wykonuje proces w czasie wykonywania. Dynamiczny polimorfizm odnosi się do procesu, gdy wywołanie nadpisanego procesu jest rozwiązywane w czasie wykonywania. Zmienna referencyjna nadklasy wywołuje nadpisaną metodę. Metody, które są implementowane zarówno przez podklasę, jak i nadklasę, zapewniają różne funkcje, dzieląc tę ​​samą nazwę.

Zrozumienie procesu Upcastingu ma kluczowe znaczenie przed zrozumieniem koncepcji polimorfizmu w czasie wykonywania. Upcasting odnosi się do procesu, w którym do obiektu klasy potomnej odwołuje się zmienna referencyjna nadklasy. Dowiedz się więcej o polimorfizmie w PHP.

Przykład dynamicznego polimorfizmu (lub czasu wykonywania)

Przykład 1:

Tworzone są dwie klasy Bike i Splendor, a klasa Splendor rozszerza klasę Bike nadpisując jej metodę run(). Metoda run() jest wywoływana przez zmienną referencyjną klasy nadrzędnej. Ponieważ metoda podklasy zastępuje metodę klasy nadrzędnej; metoda podklasy jest wywoływana w czasie wykonywania.

Program

rower klasowy {

void run(){System.out.println("uruchomiony");}

}

klasa Splendor rozszerza Rower{

void run(){System.out.println(„bezpieczny spacer 30km”);}

publiczny statyczny void main(argumenty ciągów[]){

Rower b = nowy Splendor();//upcasting

b.uruchom();

}

}

Wyjście: bezpieczne chodzenie z 60 km

Przykład 2

Tworzone są dwie klasy o nazwach „ABC” i „XYZ”, gdzie XYZ jest klasą potomną, a ABC jest klasą nadrzędną. Tutaj metoda myMethod() klasy nadrzędnej jest zastępowana przez klasę potomną. Obiekt klasy potomnej jest przypisany do odwołania do klasy nadrzędnej.

Program:

klasa ABC{

public void moja metoda() {

System.out.println("Zastąpiona metoda");

}

}

klasa publiczna XYZ rozszerza ABC{

public void mojaMetoda(){

System.out.println(„Metoda zastępowania”);

}

public static void main(String args[]){

ABC obj = nowy XYZ();

obj.mojaMetoda();

}

}

Wyjście

Nadrzędna metoda

Wniosek

Pojęcie polimorfizmu w javie jest jedną z najbardziej przydatnych funkcji w programowaniu obiektowym. Co więcej, możliwość wywoływania metody zarówno w czasie statycznym, jak iw czasie wykonywania poszerza jej zastosowanie.

Ideą wprowadzenia koncepcji polimorfizmu jest elastyczność. Ponadto możliwość przetwarzania dużej liczby obiektów w jednej zmiennej referencyjnej sprawia, że ​​kodowanie jest nieco łatwiejsze. Dlatego pojęcie to powinno być wykorzystywane w codziennych zadaniach kodowania i uwzględniać jego skuteczność.

Jeśli chcesz dowiedzieć się więcej o technologii oprogramowania, jego rozwoju i mechanizmach za nim stojących, możesz zapoznać się z kursem Executive PG Program in Software Development – ​​Specialization in Full Stack Development oferowanym przez upGrad. Kurs specjalizacyjny to 23-tygodniowy program online oferujący ponad 300 studiów przypadków, aby poszerzyć Twoją wiedzę i dostępne narzędzia oraz język programowania, aby poprawić Twoje umiejętności praktyczne. Jeśli masz więcej pytań związanych z kursem, napisz do nas. Nasz zespół skontaktuje się z Tobą.

Zaplanuj swoją karierę programistyczną już teraz.

Złóż wniosek o program Executive PG w zakresie rozwoju oprogramowania z IIIT-B