Polimorfizm w OOPS: Co to jest polimorfizm [Szczegółowe wyjaśnienie]
Opublikowany: 2020-11-24Polimorfizm 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:
- Wiązanie statyczne (lub czas kompilacji) Polimorfizm, np. Przeciążanie metody
- 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.