Polymorphismus in OOPS: Was ist Polymorphismus [Detaillierte Erklärung]

Veröffentlicht: 2020-11-24

Polymorphismus in OOPs ist untrennbar und ein wesentliches Konzept jeder objektorientierten Programmiersprache. Ein Objekt oder eine Referenz kann grundsätzlich mehrere Formen in verschiedenen Instanzen annehmen. Wie das Wort schon sagt, bedeutet „Poly“ „viele“ und „Morph“ deutet auf „Formen“ hin; Polymorphismus als Ganzes würde also „eine Eigenschaft, viele Formen zu haben“ bedeuten.

Die objektorientierte Programmiersprache verarbeitet Klassen und Objekte über eine einzige Schnittstelle. Es implementiert die Konzepte des Funktionsüberladens, des Überschreibens und der virtuellen Funktionen. Außerdem wird es typischerweise zum Instrumentieren der Vererbung in der Programmierung verwendet.

Lesen Sie: Polymorphismus vs. Vererbung

Inhaltsverzeichnis

Ein Beispiel für Polymorphismus in OOPs

Polymorphismus ist die Methode in einer objektorientierten Programmiersprache, die verschiedene Dinge gemäß der Klasse des Objekts ausführt, die sie aufruft. Mit Polymorphismus wird eine Nachricht an mehrere Klassenobjekte gesendet, und jedes Objekt antwortet entsprechend den Eigenschaften der Klasse.

Es folgt der Code, der den Polymorphismus klar erklärt:

Warnungen verwenden;
# Paketklasse erstellen
Paket A;
# Konstruktor erstellen
sub neu
{
# shift übernimmt den Paketnamen
# und der Variablen 'class' zuweisen
meine $klasse = Schicht;
mein $selbst = {
'name' => Schicht,
'roll_no' => Verschiebung
};
Sub-Methode
{
print("Das gehört zur Klasse A");
}
};
Paket B;
# Das Array @ISA enthält eine Liste
# der übergeordneten Klassen dieser Klasse, falls vorhanden
mein @ISA = (A);

Untermethode
{
print("Das gehört zur Klasse B");
}
Hauptpaket;
B->Methode();
A->Methode();

Ausgabe:

Das gehört zur Klasse B

Das gehört zur Klasse A

Erfahren Sie, wie Sie Anwendungen wie Swiggy, Quora, IMDB und mehr erstellen

Erläuterung

Für die erste Ausgabe überschreibt die in Klasse B definierte method() die von Klasse A geerbte Definition und umgekehrt für die zweite Ausgabe. Diese Eigenschaft ist nützlich, um die Funktionalität eines bereits vorhandenen Pakets zu erweitern, ohne die gesamte Definition der gesamten Klasse neu zu schreiben. Dies erleichtert dem Programmierer die Arbeit und ist der Grund für die breite Verwendung.

Arten von Polymorphismus in Oops

In der objektorientierten Programmiersprache (OOPS) gibt es zwei Arten von Polymorphismus wie unten:

  1. Statische Bindung (oder Kompilierzeit) Polymorphismus, z. B. Methodenüberladung
  2. Dynamischer Bindungs- (oder Laufzeit-) Polymorphismus, z. B. Methodenüberschreibung

Quelle

1. Kompilierzeit oder statischer Polymorphismus

Mit Method Overloading wird statischer Polymorphismus in objektorientierten Programmiersprachen erreicht, die es dem Programmierer ermöglichen, verschiedene Methoden zu implementieren. Die Namen, die sie verwenden, können dieselben sein, aber ihre Parameter sind unterschiedlich. Bestimmte Bedingungen sind förderlich für statischen Polymorphismus wie folgt:

  • Die Typen aller Parameter sollten unterschiedlich sein.
  • Die Reihenfolge der Parameter kann unterschiedlich sein.
  • Die Anzahl der Parameter einer Methode sollte sich von der anderen Methode unterscheiden.

Beim statischen Bindungspolymorphismus rufen der übereinstimmende Typ und die Anzahl der Argumente die überladenen Funktionen auf.

  • Da alle diese Informationen während der Kompilierzeit verfügbar sind, wählt der Compiler die entsprechende Funktion aus.
  • Das Überladen von Funktionen erledigt dies, und das Überladen von Operatoren wird auch als statisches Binden oder frühes Binden bezeichnet.

Programm

Klasse A // Basisklasse

{

int ein;

öffentlich :

ungültige Anzeige ()

{

cout<< „Klasse A“ ;

}

};

Klasse B: öffentliche A // abgeleitete Klasse

{

int b;

öffentlich :

ungültige Anzeige ()

{

cout<< „Klasse B“ ;

}

};

Im obigen Programm ist der Funktionsprototyp display() sowohl in der Basis- als auch in der abgeleiteten Klasse gleich. Daher kann hier keine statische Bindung angewendet werden. Dieses Programm würde bei entsprechender Funktionsauswahl zur Laufzeit am besten laufen.

  • Während der Laufzeit identifiziert der Compiler der Sprache verschiedene Methoden, indem er Signaturen dieser Methoden identifiziert.
  • Der Compiler identifiziert zuerst die Methodensignatur und entscheidet die Methode für einen bestimmten Methodenaufruf während der Programmkompilierung.
  • Die Ausführung für Compile Time Polymorphism ist viel schneller, aber der Prozess ist nicht so flexibel.

Lesen Sie auch: OOPS Interviewfragen

Laufzeit oder dynamischer Polymorphismus

Beim dynamischen Polymorphismus wird ein Aufruf einer einzelnen überschriebenen Methode während der Laufzeit eines Programms gelöst. Das Überschreiben von Methoden ist eines der prominentesten Beispiele für Laufzeitpolymorphismus. In diesem Prozess erfolgt das Überschreiben durch Zeiger und virtuelle Funktionen.

  • Beim Methodenüberschreiben wird eine einzelne Methode in einer Unterklasse deklariert, die in einer Elternklasse vorhanden ist. Die untergeordnete Klasse erhält eine Methode zur Implementierung.
  • Während Runtime Polymorphism bietet die Klasse die Spezifikation ihrer eigenen einer anderen geerbten Methode an. Diese Übertragung zwischen Methoden wird erreicht, ohne die Objektcodes der Elternklasse zu modifizieren.

Programm

#include <iostream>

mit Namensraum std;

Klasse Tier { // Basisklasse

öffentlich :

Zeichenfolgenfarbe = „Braun“ ;

};

class Dog: public Animal // erbt die Animal-Klasse.

{

öffentlich :

string color = „Grün“ ;

};

int main( void ) {

Tier d= Hund();

cout<<d.color;

}

Ausgabe:

Braun

  • Beim Laufzeitpolymorphismus wird die Methode des Objekts zur Laufzeit statt zur Kompilierzeit aufgerufen.
  • Möglich wird dies durch das Überschreiben von Methoden, das auch als dynamisches Binden oder spätes Binden bezeichnet wird.
  • Der Prozess des dynamischen Polymorphismus ist vergleichsweise langsamer, aber flexibler als der Polymorphismus zur Kompilierzeit.

Unterschiede B/W Compile-Time und Run-Time Polymorphism

Polymorphismus zur Kompilierzeit Laufzeitpolymorphismus
Aufruf der Funktion Die Funktion wird zur Kompilierzeit aufgerufen. Die Funktion wird zur Laufzeit aufgerufen.
Allgemeine Begriffe Dies ist als Überladen, frühes Binden und statisches Binden bekannt. Dies wird als überschreiben, spätes Binden und dynamisches Binden bezeichnet.
Methodenname und Parameter Beim Überladen haben mehrere Methoden denselben Namen, aber eine unterschiedliche Anzahl oder Art von Parametern. Beim Überschreiben haben mehr als eine Methode den gleichen Namen, die gleiche Anzahl und den gleichen Parametertyp.
Träger Dies wird durch Überladen von Funktionen und Operatoren erreicht. Dies wird mit virtuellen Funktionen und Zeigern erreicht.
Ausführungszeit Es wird zur Kompilierzeit schneller ausgeführt als der Laufzeitpolymorphismus. Es wird zur Laufzeit langsamer ausgeführt als der Polymorphismus zur Kompilierzeit.
Flexibilität Es ist weniger flexibel, da alles zur Kompilierzeit ausgeführt wird. Es ist flexibler, da alles zur Laufzeit ausgeführt wird.

Letzte Worte

Polymorphismus ist das Muss-Konzept von OOPs, da es beim Programmieren mehrere Vorteile bietet. Mit Polymorphismus kann der Benutzer die getesteten Klassen und Codes umgestalten. Es ist nützlich, um die Programmierung selbst zu erweitern. Es ermöglicht dem Benutzer auch, mehrere verschiedene Typvariablen wie Double, Float, Int oder Long in einer einzigen Variablen zu speichern, um die Suche und Implementierung zu vereinfachen.

Wenn Sie mehr über OOPs und Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das PG-Diplom in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen und mehr als 9 Projekte bietet und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Werden Sie Full-Stack-Entwickler

UPGRAD UND IIIT-BANGALORES PG-DIPLOM IN SOFTWAREENTWICKLUNG
Erfahren Sie mehr