Einführung in das Überschreiben von Methoden in C #
Einfach ausgedrückt bedeutet Überschreiben, dass das Verhalten von Methoden geändert werden kann. Wir alle kennen die Virtual-Funktion in C ++, in der wir die Funktion aus der Basisklasse in der abgeleiteten Klasse aufrufen. Das Überschreiben von Methoden in C # bietet eine ähnliche Berechtigung wie die virtuelle Funktion in C ++. Um ein Beispiel für die Vögel zu geben: Alle Vögel haben die gleichen Eigenschaften wie Fliege, Farbe usw. Aber verschiedene Vögel haben eine andere Flugweise und die Farbe variiert von Vogel zu Vogel. So können wir die Bird-Basisklassenmethoden in abgeleiteten Klassen wie Papagei, Spatz, Krähe usw. überschreiben.
Wie verwende ich Overriding in C #?
Angenommen, unsere Anwendung muss das Verhalten der Basisklassenmethode in einer abgeleiteten Klasse ändern. Dann sollten wir die Methode überschreiben. Um dies zu erreichen, müssen wir die Methode in der abgeleiteten Klasse mit derselben Signatur in der Basisklasse erstellen, um eine andere Aufgabe auszuführen. Bevor wir lernen, wie man die übergeordnete Technik einsetzt, müssen wir die folgenden Punkte beachten.
- In der C # -Programmierung wird das Überschreiben von Methoden auch als Laufzeitpolymorphismus, späte Bindung oder dynamischer Polymorphismus bezeichnet.
- Nur in den abgeleiteten Klassen ist ein Überschreiben der Methode möglich. Weil eine Methode in der abgeleiteten Klasse von der Basisklasse überschrieben wird.
- Die Methode sollte eine nicht virtuelle oder statische Methode für eine Außerkraftsetzung sein.
- Der Zugriffsebenenmodifikator für die Überschreibungsmethode und die virtuelle Methode sollte identisch sein.
Die Methode, die von der Überschreibungsdeklaration überschrieben wird, wird als überschriebene Basismethode bezeichnet. Dies wird in der Basisklasse vorhanden sein. Die überschriebene Basismethode kann entweder abstrakt, überschrieben oder virtuell sein. Von dieser Basisklasse wird die neue, Override-Methode genannte Implementierung geerbt.
Wir verwenden verschiedene Schlüsselwörter zum Überschreiben von Methoden. Sie sind,
1) Virtuelles Schlüsselwort
Wenn der Compiler auf das virtuelle Schlüsselwort im Programm stößt, versteht er, dass diese Methode von jeder ihrer abgeleiteten Klassen überschrieben werden kann. Die Struktur ist wie folgt.
public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)
2) Keyword überschreiben
Dies ist in der abgeleiteten Klasse vorhanden. Es teilt dem Compiler mit, dass diese Methode die Methode mit demselben Namen und derselben Signatur in der Basisklasse überschreibt.
public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)
Beispiel
Schauen wir uns zunächst das Beispiel an, ohne das Schlüsselwort Virtual and override zu verwenden.
Code:
class Birds
(
public void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
class Parrot:Birds
(
public void Color( )
(
Console.WriteLine("Parrot is Green");
)
)
class ExecutionClass
(
public static void Main( )
(
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
)
)
Ausgabe:
Im obigen Beispiel haben wir ein Objekt der abgeleiteten Klasse Parrot erstellt und dessen Referenz in dem Referenzvariablenobjekt vom Typ Birds gespeichert.
Im nächsten Schritt rufen wir mit dem Referenzvariablenobjekt die Funktion Color () auf. Da object einen Verweis auf ein Objekt vom Typ Parrot enthält, erwarten wir natürlich, dass die Funktion Color () der Klasse Parrot ausgeführt wird. Aber wir liegen falsch. Die Schönheit der Programmierung lässt es nicht zu.
Zu unserer Überraschung wird die Color () - Methode der Birds-Klasse ausgeführt. Dies liegt daran, dass die Funktion basierend auf dem Referenztyp aufgerufen wird und nicht auf das, worauf sich das Referenzvariablenobjekt bezieht. Da object eine Referenz vom Typ Birds ist, wird die Funktion Color () der Klasse Birds aufgerufen, egal auf wen sich das Objekt bezieht.
Jetzt schreiben wir dasselbe Programm mit virtual und override. Dieses Mal werden wir zum besseren Verständnis Schritt für Schritt vorgehen.
Erstellen Sie eine Basisklasse mit einem beliebigen Namen. Hier benutze ich Vögel. Schreiben Sie eine Methode mit dem Schlüsselwort virtual. Dies ist unsere überschriebene Methode, die wir in der geerbten Klasse überschreiben. Schreiben Sie in der Methode eine Nachricht, die in der Konsole gedruckt werden soll.
class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
Jetzt erstelle eine weitere Klasse Papagei Dieses Mal werden wir sie von der Basisklasse erben, die wir zuvor erstellt haben, dh Vögel. Zum Erben verwenden wir das ':' Symbol.
Klasse Papagei: Vögel
Schreiben Sie hier eine Funktion mit dem Schlüsselwort override und schreiben Sie eine Nachricht. Stellen Sie sicher, dass der Methodenname und die Signatur in der abgeleiteten Klasse mit dem Methodennamen und der Signatur in der Basisklasse übereinstimmen.
public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)
Wir benötigen eine weitere Klasse, um die Funktionalität auszuführen und das Überschreiben zu überprüfen. Erstellen Sie eine Klasse mit einem beliebigen Namen. Darin schreiben Sie die Main-Funktion.
class ExecutionClass
(
public static void Main( )
(
)
)
Erstellen Sie ein Objekt der übergeordneten Klasse und lösen Sie die Funktion mit dem Objekt der Klasse aus. Dadurch wird die in der Birds-Klasse vorhandene Color-Methode aufgerufen.
Birds object;
object = new Birds( );
object .Color( );
Erstellen Sie nun das Objekt der abgeleiteten Klasse und rufen Sie die Color-Methode auf. Dadurch wird die Color-Methode der Parrot-Klasse aufgerufen.
object = new Parrot( );
object.Color( );
Können Sie die Ausgabe erraten, wenn wir das Programm ausführen? Dies ist wie unten gezeigt.
Ausgabe:
Mit der Option "Schlüsselwörter überschreiben und virtuell" können die Methoden der Basisklasse und der abgeleiteten Klasse zu jedem Zeitpunkt separat aufgerufen werden, auch wenn die Methodennamen und Signaturen identisch sind.
Fazit
In diesem Artikel haben wir das Überschreiben von Methoden, das Erfordernis des Überschreibens von Methoden, das reale Beispiel des Überschreibungsprinzips, die Art und Weise, wie dies erreicht wird, die Notwendigkeit der Verwendung der Schlüsselwörter virtual und override und das Beispiel des Überschreibens mithilfe des Codes verstanden. Wir können daraus schließen, dass das Überschreiben eines der nützlichen Merkmale des Polymorphismus ist, mit dem wir das Verhalten der Basisklassenmethode in der abgeleiteten Klasse ändern können.
Empfohlene Artikel
Dies ist eine Anleitung zum Überschreiben von Methoden in C #. Hier werden die Einführung, die Verwendung von Überschreibungs- und anderen Schlüsselwörtern für das Überschreiben von Methoden sowie Beispiele und Schritte erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -
- C # -Funktionen
- C # -Befehle
- Was ist Multithreading in C #?
- C # String-Funktionen
- Anleitung zum Überschreiben in C ++
- In Java überschreiben
- Multithreading in C # mit Methoden