Polimorfizm w Javie

Polimorfizm w Javie jest pojęciem, dzięki któremu możemy wykonać jedną akcję na różne sposoby. Polimorfizm wywodzi się od 2 greckich słów: poly i morphs. Słowo „poly” oznacza wiele, a „morphs” oznacza formy. Tak więc polimorfizm oznacza wiele form.

W Javie istnieją dwa rodzaje polimorfizmu: polimorfizm w czasie kompilacji i polimorfizm w czasie wykonywania. Możemy wykonać polimorfizm w Javie poprzez przeciążanie metod i nadpisywanie metod.

Jeśli przeciążymy statyczną metodę w Javie, jest to przykład polimorfizmu czasu kompilacji. Tutaj skupimy się na polimorfizmie w czasie rzeczywistym w Javie.

Polimorfizm w czasie rzeczywistym w Javie

Polimorfizm w czasie rzeczywistym lub dynamiczna wysyłka metod to proces, w którym wywołanie nadrzędnej metody jest rozwiązywane w czasie wykonywania, a nie w czasie kompilacji.

W tym procesie nadrzędna metoda jest wywoływana przez zmienną referencyjną nadklasy. Określenie metody, która ma zostać wywołana, jest oparte na obiekcie, do którego odnosi się zmienna referencyjna.

Zrozummy najpierw upcasting przed Runtime Polymorphism.

Upcasting

Jeśli zmienna referencyjna klasy Parent odnosi się do obiektu klasy Child, jest to znane jako upcasting. Na przykład:

Upcasting w Javie

Do upcastingu możemy użyć zmiennej referencyjnej typu klasy lub typu interfejsu. Na przykład:

Tutaj, relacja klasy B byłaby następująca:

B IS-A AB IS-A IB IS-A Object

Ponieważ Object jest klasą główną wszystkich klas w Javie, więc możemy napisać B IS-A Object.

Przykład polimorfizmu w czasie rzeczywistym w Javie

W tym przykładzie, tworzymy dwie klasy Bike i Splendor. Klasa Splendor rozszerza klasę Bike i nadpisuje jej metodę run(). Wywołujemy metodę run przez zmienną referencyjną klasy Parent. Ponieważ odwołuje się ona do obiektu podklasy, a metoda podklasy nadpisuje metodę klasy Parent, metoda podklasy jest wywoływana w czasie wykonywania.

Ponieważ wywołanie metody jest określane przez JVM, a nie kompilator, jest to znane jako polimorfizm w czasie wykonywania.

Testuj teraz

Wyniki:

running safely with 60km.

Przykład polimorfizmu w czasie wykonywania w Javie: Bank

Rozważmy scenariusz, w którym Bank jest klasą, która zapewnia metodę, aby uzyskać stopę procentową. Jednakże, stopa procentowa może się różnić w zależności od banku. Na przykład, banki SBI, ICICI i AXIS dostarczają 8.4%, 7.3% i 9.7% stopy procentowej.

Przykład polimorfizmu Java Runtime dla banku

Uwaga: Ten przykład jest również podany w metodzie overriding, ale nie było upcastingu.

Test it Now

Output:

SBI Rate of Interest: 8.4ICICI Rate of Interest: 7.3AXIS Rate of Interest: 9.7

Przykład polimorfizmu Java Runtime: Shape

Test it Now

Output:

drawing rectangle...drawing circle...drawing triangle...

Java Runtime Polymorphism Example: Animal

Test it Now

Output:

eating bread...eating rat...eating meat...

Java Runtime Polymorphism with Data Member

Metoda jest nadrzędna, a nie członkowie danych, więc polimorfizm runtime nie może być osiągnięty przez członków danych.

W przykładzie podanym poniżej, obie klasy mają członka danych speedlimit. Uzyskujemy dostęp do członka danych przez zmienną referencyjną klasy Parent, która odnosi się do obiektu podklasy. Ponieważ uzyskujemy dostęp do członka danych, który nie jest nadpisany, stąd będzie on miał dostęp do członka danych klasy Parent zawsze.

Reguła: Runtime polimorfizm nie może być osiągnięty przez członków danych.

Testuj teraz

Wyjście:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *