C#-Vererbung und Polymorphismus mit Programmbeispielen
Was ist Vererbung in C#?
Erbe ist ein wichtiges Konzept von C#. Vererbung ist ein Konzept, bei dem Sie übergeordnete und untergeordnete Klassen definieren. Die untergeordneten Klassen erben Methoden und Eigenschaften der übergeordneten Klasse, können aber gleichzeitig bei Bedarf auch das Verhalten der Methoden ändern. Die untergeordnete Klasse kann bei Bedarf auch eigene Methoden definieren.
Lassen Sie uns die C#-Vererbung anhand eines Programmbeispiels besser verstehen:
Beispiel für eine C#-Vererbung
Sehen wir uns nun an, wie wir das Konzept der Vererbung in unseren Code integrieren können.
Schritt 1) Der erste Schritt besteht darin, den Code für unsere Tutorial-Klasse zu ändern. In diesem Schritt fügen wir den folgenden Code zur Datei Tutorial.cs hinzu.
Beachten Sie, dass wir jetzt den Zugriffsmodifikator „protected“ sowohl zum TutorialID- als auch zum TutorialName-Feld hinzufügen müssen.
Denken Sie daran, dass wir diesen Zugriffsmodifikator im Tutorial zum Zugriffsmodifikator erwähnt haben. Nun, hier können Sie den Zweck dieser Maßnahme erkennen. Nur wenn Sie diesen Zugriffsmodifikator haben (geschützt), kann die untergeordnete Klasse die Felder der übergeordneten Klasse verwenden.
Schritt 2) Der zweite Schritt besteht darin, unsere neue Kinderklasse hinzuzufügen. Der Name dieser Klasse lautet „Guru99Tutorial“. In diesem Schritt fügen wir den folgenden Code zur Datei Tutorial.cs hinzu. Der Code sollte nach der Klassendefinition „Tutorial“ platziert werden.
Code-Erklärung:-
- Der erste Schritt besteht darin, die untergeordnete Klasse Guru99Tutorial zu erstellen. Wir müssen auch erwähnen, dass diese Klasse eine untergeordnete Klasse der Tutorial-Klasse sein wird. Dies geschieht mit dem Schlüsselwort „:“.
- Als Nächstes definieren wir eine Methode namens RenameTutorial. Es wird verwendet, um das Feld „TutorialName“ umzubenennen. Diese Methode akzeptiert eine String-Variable, die den neuen Namen des Tutorials enthält.
- Anschließend haben wir dem Feld TutorialName den Parameter pNewName zugewiesen.
Hinweis: – Auch wenn wir das Feld TutorialName in der Klasse „Guru99Tutorial“ nicht definiert haben, können wir dennoch auf dieses Feld zugreifen. Dies liegt daran, dass „Guru99Tutorial“ eine untergeordnete Klasse der Tutorial-Klasse ist. Und da wir die Felder der Tutorial-Klasse als geschützt gekennzeichnet haben, kann diese Klasse auf sie zugreifen.
Schritt 3) Der letzte Schritt besteht darin, unsere Hauptdatei Program.cs zu ändern. In unserer Konsolenanwendung erstellen wir ein Objekt der Klasse Guru99Tutorial. Mit diesem Objekt rufen wir die RenameTutorial-Methode auf. Anschließend zeigen wir das Feld „TutorialName“ mithilfe der Methode „GetTutorial“ an.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } } public class Guru99Tutorial:Tutorial { public void RenameTutorial(String pNewName) { TutorialName=pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code-Erklärung:-
- Der erste Schritt besteht darin, ein Objekt für die Guru99Tutorial-Klasse zu erstellen. Dies geschieht über das Schlüsselwort „new“. Beachten Sie, dass wir dieses Mal kein Objekt der Tutorial-Klasse erstellen.
- Wir verwenden die RenameTutorial-Methode der Guru99Tutorial-Klasse, um das TutorialName-Feld zu ändern. Wir übergeben den String „.Net by Guru99“ an die RenameTutorial-Methode.
- Anschließend rufen wir die Methode GetTutorial auf. Beachten Sie, dass wir, obwohl diese Methode nicht in der Klasse Guru99Tutorial definiert ist, dennoch auf diese Methode zugreifen können. Die Ausgabe der Methode GetTutorial wird dann über die Methode Console.WriteLine in der Konsole angezeigt.
Wenn der obige Code richtig eingegeben und das Programm erfolgreich ausgeführt wird, wird die folgende Ausgabe angezeigt.
Ausgang:
Aus der Ausgabe können wir deutlich erkennen, dass das Feld „TutorialName“ in „.Net by Guru99“ umbenannt wurde. Dies wurde durch die von der untergeordneten Klasse aufgerufene RenameTutorial-Methode ermöglicht.
Was ist Polymorphismus in C#?
Polymorphie in C# ist ein OOP-Konzept, bei dem ein Name viele Formen haben kann. Sie haben beispielsweise ein Smartphone zur Kommunikation. Der von Ihnen gewählte Kommunikationsmodus kann alles sein. Es kann ein Anruf, eine Textnachricht, eine Bildnachricht, eine E-Mail usw. sein. Das Ziel ist also dasselbe, nämlich Kommunikation, aber der Ansatz ist unterschiedlich. Dies wird als Polymorphismus bezeichnet.
Mit dem folgenden Programmbeispiel erhalten Sie ein besseres Verständnis des C#-Polymorphismus:
Beispiel für C#-Polymorphismus
Sehen wir uns nun an, wie wir das Konzept des Polymorphismus in unseren Code integrieren können.
Schritt 1) Der erste Schritt besteht darin, den Code für unsere Tutorial-Klasse zu ändern. In diesem Schritt fügen wir den folgenden Code zur Datei Tutorial.cs hinzu.
Code-Erklärung:-
1 & 2) Der erste Schritt ist der gleiche wie in unseren früheren Beispielen. Wir behalten die Definition der SetTutorial-Methode bei, wie sie ist.
3) Diese Methode legt die TutorialID und den TutorialName basierend auf den Parametern pID und pName fest.
4) Hier nehmen wir eine Änderung an unserer Klasse vor, indem wir eine neue Methode mit dem gleichen Namen SetTutorial hinzufügen. Nur übergeben wir dieses Mal nur einen Parameter, nämlich den pName. Bei dieser Methode setzen wir lediglich das Feld von TutorialName auf pName.
Schritt 2) Der letzte Schritt besteht darin, unsere Hauptdatei Program.cs zu ändern. In unserer Konsolenanwendung erstellen wir ein Objekt der Klasse Guru99Tutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public void SetTutorial(string pName) { TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); pTutor.SetTutorial(1,"First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code-Erklärung:-
- Im ersten Schritt verwenden wir die SetTutorial-Methode mit 2 Parametern. Dabei übergeben wir sowohl die TutorialID als auch den TutorialName an diese Methode.
- Im zweiten Schritt rufen wir nun die SetTutorial-Methode mit nur einem Parameter auf. Wir übergeben lediglich den TutorialName an diese Methode.
Wenn der obige Code richtig eingegeben und das Programm ausgeführt wird, wird die folgende Ausgabe angezeigt. Wenn Sie neben dem Tutorial-Namen auch die Tutorial-ID abrufen möchten, sollten Sie den folgenden Schritt ausführen
- Erstellen Sie eine separate Methode namens public int GetTutorialID
- Schreiben Sie in diese Methode die Codezeile „return TutorialID“. Dies kann verwendet werden, um die TutorialID an das aufrufende Programm zurückzugeben.
Ausgang:
Aus der Ausgabe können wir deutlich erkennen, dass beide Methoden erfolgreich aufgerufen wurden. Aus diesem Grund wurden die Zeichenfolgen „First Tutorial“ und „Second Tutorial“ an die Konsole gesendet.
Zusammenfassung
- Bei der Vererbung erbt eine untergeordnete Klasse die Felder und Methoden der übergeordneten Klasse. Die Kindklasse kann dann auch eigene Methoden definieren.
- Polymorphismus in C# ist ein OOPs-Konzept, bei dem ein Name viele Formen haben kann.