Polymorphismus

Definition - Was bedeutet Polymorphismus?

Polymorphismus in C # ist die Fähigkeit von Objekten unterschiedlichen Typs, eine eindeutige Schnittstelle für verschiedene Implementierungen von Methoden bereitzustellen. Es wird normalerweise im Zusammenhang mit einer späten Bindung verwendet, bei der das Verhalten eines Objekts, auf einen Aufruf seiner Methodenmitglieder zu antworten, basierend auf dem Objekttyp zur Laufzeit bestimmt wird. Polymorphismus ermöglicht die Neudefinition von Methoden in abgeleiteten Klassen.

Polymorphismus bildet neben Kapselung und Vererbung eines der Grundkonzepte der objektorientierten Programmierung.

Technische.me erklärt Polymorphismus

Methodenüberladung, Konstruktorüberladung und Operatorüberladung werden als Polymorphismus zur Kompilierungszeit (auch als statischer oder Ad-hoc-Polymorphismus bezeichnet) oder als frühe Bindung betrachtet. Das Überschreiben von Methoden, das Vererbung und virtuelle Funktionen umfasst, wird als Laufzeitpolymorphismus (auch als dynamisch, Einschluss oder Subtypisierung bezeichnet) oder späte Bindung bezeichnet. Im Falle eines Polymorphismus zur Kompilierungszeit wird die Identifizierung der auszuführenden überladenen Methode zur Kompilierungszeit durchgeführt. Beim Laufzeitpolymorphismus wird jedoch zur Laufzeit der Typ des Objekts identifiziert, von dem aus die überschriebene Methode aufgerufen wird.

In C # wird Polymorphismus durch Vererbung und die Verwendung des Schlüsselworts "virtuell" implementiert. Abgeleitete Klassen erben die Basisklassenmitglieder mit Ausnahme der Konstruktoren basierend auf ihren Zugänglichkeitsstufen. Daher generiert der Compiler den Code, um zur Laufzeit den richtigen Objekttyp (auf den der Referenztyp zeigt) und die entsprechende aufzurufende Methode zu überprüfen und zu identifizieren.

Ein Beispiel für Polymorphismus ist eine Mitarbeiterbasisklasse, die alle grundlegenden Details zu Mitarbeitern enthält. Klassen wie Sachbearbeiter und Manager können von der Basisklasse der Mitarbeiter mit bestimmten Implementierungen (durch Überschreiben virtueller Methoden) erben, wo immer dies in den abgeleiteten Klassen erforderlich ist.

Diese Definition wurde im Kontext von C # geschrieben