Polimorfizm w OOPS: Co to jest polimorfizm [Szczegółowe wyjaśnienie]

Opublikowany: 2020-11-24

Polimorfizm w obiektach OOP jest nieodłączną i podstawową koncepcją każdego języka programowania obiektowego. Obiekt lub odwołanie zasadniczo może przybierać różne formy w różnych przypadkach. Jak sugeruje to słowo, „poly” oznacza „wiele”, a „morfing” wskazuje na „formy”; tak więc polimorfizm jako całość oznaczałby „właściwość posiadania wielu form”.

Język programowania obiektowego przetwarza klasy i obiekty za pomocą jednego interfejsu. Implementuje koncepcje przeciążania funkcji, zastępowania i funkcji wirtualnych. Jest również zwykle używany do dziedziczenia instrumentacji w programowaniu.

Przeczytaj: Polimorfizm a dziedziczenie

Spis treści

Przykład polimorfizmu w obiektach obiektowych

Polimorfizm to metoda w obiektowym języku programowania, która wykonuje różne rzeczy zgodnie z klasą obiektu, która go wywołuje. Dzięki Polimorfizmowi wiadomość jest wysyłana do wielu obiektów klasy, a każdy obiekt odpowiada odpowiednio zgodnie z właściwościami klasy.

Poniżej znajduje się kod, który wyraźnie wyjaśnia polimorfizm:

używać ostrzeżeń;
# Tworzenie klasy pakietu
pakiet A;
# Tworzenie Konstruktora
sub nowy
{
# shift przyjmie nazwę pakietu
# i przypisz do zmiennej 'class'
moja $klasa = przesunięcie;
moje $ja = {
'imię' => przesunięcie,
'roll_no' => przesunięcie
};
metoda podrzędna
{
print(„To należy do klasy A”);
}
};
pakiet B;
# Tablica @ISA zawiera listę
# z klas nadrzędnych tej klasy, jeśli istnieją
mój @ISA = (A);

podmetoda
{
print(„To należy do klasy B”);
}
pakiet główny;
B->metoda();
A->metoda();

Wyjście:

Należy do klasy B

To należy do klasy A

Naucz się tworzyć aplikacje, takie jak Swiggy, Quora, IMDB i nie tylko

Wyjaśnienie

Dla pierwszego wyjścia metoda () zdefiniowana w klasie B zastępuje definicję odziedziczoną z klasy A i odwrotnie dla drugiego wyjścia. Ta właściwość jest przydatna w rozszerzaniu funkcjonalności dowolnego istniejącego pakietu bez przepisywania całej definicji całej klasy. W ten sposób ułatwienie pracy programiście i powód do szerokiego stosowania.

Rodzaje polimorfizmu w Oops

W języku programowania zorientowanego obiektowo (OOPS) istnieją dwa rodzaje polimorfizmu, jak poniżej:

  1. Wiązanie statyczne (lub czas kompilacji) Polimorfizm, np. Przeciążanie metody
  2. Polimorfizm dynamicznego wiązania (lub środowiska wykonawczego), np. Zastępowanie metody

Źródło

1. Czas kompilacji lub polimorfizm statyczny

Dzięki przeciążaniu metod statyczny polimorfizm jest osiągany w językach programowania obiektowego, które pozwalają programiście na implementację różnych metod. Nazwy, których używają, mogą być takie same, ale ich parametry są inne. Pewne warunki sprzyjają statycznemu polimorfizmowi, jak poniżej:

  • Typy wszystkich parametrów powinny być różne.
  • Kolejność parametrów może być inna.
  • Liczba parametrów jednej metody powinna różnić się od drugiej.

W polimorfizmie powiązania statycznego typ dopasowania i liczba argumentów wywołują przeciążone funkcje.

  • Ponieważ wszystkie te informacje są dostępne w czasie kompilacji, kompilator wybiera odpowiednią funkcję.
  • Robi to przeciążanie funkcji, a przeciążanie operatora jest również określane jako wiązanie statyczne lub wczesne wiązanie.

Program

klasa A // klasa podstawowa

{

int ;

publiczny :

nieważne wyświetlanie()

{

cout<< „Klasa A” ;

}

};

klasa B: public A // klasa pochodna

{

intb ;

publiczny :

nieważne wyświetlanie()

{

cout<< „Klasa B” ;

}

};

W powyższym programie prototyp funkcji display() jest taki sam zarówno w klasie bazowej, jak i pochodnej. Dlatego nie można tutaj zastosować wiązania statycznego. Ten program działałby najlepiej w czasie wykonywania z odpowiednim wyborem funkcji.

  • W czasie wykonywania kompilator języka identyfikuje różne metody, identyfikując sygnatury tych metod.
  • Kompilator najpierw identyfikuje sygnaturę metody i decyduje o metodzie dla określonego wywołania metody podczas kompilacji programu.
  • Wykonanie polimorfizmu w czasie kompilacji jest znacznie szybsze, ale proces nie jest tak elastyczny.

Przeczytaj także: Pytania do rozmowy kwalifikacyjnej OOPS

Polimorfizm w czasie wykonywania lub dynamiczny

W dynamicznym polimorfizmie wywołanie pojedynczej nadpisanej metody jest rozwiązywane w czasie wykonywania programu. Zastępowanie metod jest jednym z wybitnych przykładów polimorfizmu środowiska uruchomieniowego. W tym procesie nadpisywanie odbywa się za pomocą wskaźników i funkcji wirtualnych.

  • W Method Overriding pojedyncza metoda jest deklarowana w podklasie obecnej w klasie nadrzędnej. Klasa potomna zyskuje metodę implementacji.
  • Podczas polimorfizmu środowiska uruchomieniowego klasa oferuje własną specyfikację innej dziedziczonej metodzie. Ten transfer między metodami jest osiągany bez modyfikowania kodów obiektów klasy nadrzędnej.

Program

#włącz <iostream>

używając standardowej przestrzeni nazw ;

class Animal { // klasa bazowa

publiczny :

kolor ciągu = „Brązowy” ;

};

class Pies: public Animal // dziedziczenie klasy Animal.

{

publiczny :

kolor ciągu = „Zielony” ;

};

int główna ( nieważne ) {

Zwierzę d= Pies();

cout<<d.kolor;

}

Wyjście:

brązowy

  • W polimorfizmie czasu wykonywania metoda obiektu jest wywoływana w czasie wykonywania zamiast w czasie kompilacji.
  • Jest to możliwe dzięki overridingowi metody, który jest również określany jako wiązanie dynamiczne lub wiązanie późne.
  • Proces dynamicznego polimorfizmu jest stosunkowo wolniejszy, ale elastyczny niż polimorfizm w czasie kompilacji.

Różnice w czasie kompilacji czarno-białej i polimorfizmie w czasie wykonywania

Polimorfizm w czasie kompilacji Polimorfizm w czasie wykonywania
Wywołanie funkcji Funkcja jest wywoływana w czasie kompilacji. Funkcja jest wywoływana w czasie wykonywania.
Wspólne warunki Jest to znane jako przeciążenie, wczesne wiązanie i wiązanie statyczne. Nazywa się to nadpisywaniem, późnym wiązaniem i dynamicznym wiązaniem.
Nazwa metody i parametry W Overloading więcej niż jedna metoda ma tę samą nazwę, ale inną liczbę lub typ parametrów. W Overriding więcej niż jedna metoda ma tę samą nazwę, numer i typ parametrów.
Przewoźnicy Osiąga się to przy przeciążeniu funkcji i operatora. Osiąga się to za pomocą funkcji wirtualnych i wskaźników.
Czas egzekucji Wykonuje się szybciej niż polimorfizm w czasie wykonywania w czasie kompilacji. Wykonuje się wolniej niż polimorfizm w czasie kompilacji w czasie wykonywania.
Elastyczność Jest mniej elastyczny, ponieważ wszystko jest wykonywane w czasie kompilacji. Jest bardziej elastyczny, ponieważ wszystko jest wykonywane w czasie wykonywania.

Ostatnie słowa

Polimorfizm jest koniecznością poznania koncepcji OOP, ponieważ oferuje kilka zalet podczas programowania. Dzięki Polimorfizmowi użytkownik może przemodelować testowane klasy i kody. Jest to przydatne przy samodzielnym rozszerzaniu programowania. Pozwala również użytkownikowi przechowywać wiele zmiennych różnych typów, takich jak double, Float, Int lub Long w jednej zmiennej, aby ułatwić ich wyszukiwanie i implementację.

Jeśli chcesz dowiedzieć się więcej o programach OOP, pełnym tworzeniu oprogramowania, zapoznaj się z dyplomem PG upGrad i IIIT-B w zakresie pełnego tworzenia oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznych szkoleń, ponad 9 projektów i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Zostań programistą Full Stack

AKTUALIZACJA I DYPLOM PG IIIT-BANGALORE W ROZWOJU OPROGRAMOWANIA
Ucz się więcej