C# Multiple Erbe

C# Multiple Erbe

Programmierer können mehrere Vererbung verwenden, um Klassen zu konstruieren, die Funktionen aus verschiedenen Klassen und Hierarchien integrieren. Es ist auch hilfreich, wenn eine Kinderklasse mehrere Basisklassenverträge kombinieren möchte. In C# wird nicht mehrerer Vererbung unterstützt, da die Programmierer der Meinung sind. In der C# -Programmiersprache können die Klassen nur von einer übergeordneten Klasse erben, die als einzelnes Vererbung bezeichnet wird.

Es können jedoch Schnittstellen oder eine Klasse und Schnittstellenkombination verwendet werden. Dieser Artikel zeigt, wie vieler Vererbung in C# durch die Verwendung verschiedener Ansätze erreicht werden kann.

Was sind C# Schnittstellen?

Die multiple Vererbung ist mit Klassen nicht möglich, wie wir wissen, aber es ist mit Schnittstellen erreichbar, wenn das Schlüsselwort der Schnittstelle verwendet wird. Die Schnittstelle liefert nur die Definitionen von Methoden, Eigenschaften, Ereignissen und Indexern, enthält jedoch keine Codeimplementierung. Wir können keine Zugriffsmodifikatoren für die Interface -Mitglieder hinzufügen, da sie implizit öffentlich und abstrakt sind. Variablen, konstante Mitglieder, Konstruktoren, Zerstörer und statische Mitglieder sind in einer Schnittstelle nicht erlaubt.

Wichtigkeit von C# -Schnizeln

Eine Schnittstelle ist nicht dasselbe wie eine Klasse. Es hat nur Methodensignaturen. Es kann nicht erstellt werden, da es keine Implementierung hat. Die daraus abgeleiteten Klassen bieten die Implementierungslogik. Eine Schnittstelle wird oft als reine abstrakte Klasse angesehen. Die Verwendung einer Schnittstelle und nicht einer abstrakten Klasse hat den Vorteil, dass die Mehrfachvererbung unterstützt wird.

So implementieren Sie Schnittstellen für C# Multiple Vererbung

In der C# -Sprache gibt es zahlreiche Ansätze zum Erreichen mehrerer Vererbungsfunktionen. Um die Grundlagen der Verwendung von Schnittstellen zur Implementierung mehrerer Erbschaften zu kennen, haben wir einige Programme in den folgenden Abbildungen:

Beispiel Nr. 1: Implementierung mehrerer Klassenvererbung

Wir versuchen, in der folgenden Klasse mehrere Vererbung zu implementieren. Zunächst versuchen wir, die Eigenschaften der ersten Elternklasse und der zweiten Elternklasse in die Kinderklasse zu erben. Der Compiler wirft jedoch den Laufzeitfehler aus.

Wir haben die Systembibliotheken zu Beginn des Codes aufgenommen. Danach haben wir eine übergeordnete Klasse "Früchte" erstellt und auch eine Methode der Klasse als "Myfruits" definiert. In der Methode "MyFruits" haben wir eine Liste als "MyList" erstellt und der Liste verschiedene Elemente hinzugefügt, indem wir die Methode hinzufügen. Die Foreach -Schleife wird verwendet, um jeden Element in der Liste zu iterieren und die Listenelemente einer neuen Variablen, „Elemente“, zuweisen zu können. Dann haben wir eine andere übergeordnete Klasse, „FruitColors“, erstellt und die Methode „Farben“ zur Implementierung bereitgestellt. Wir haben auch die Elemente in der Liste der Klasse „Farben“ wie in der vorherigen Klasse hinzugefügt.

Jetzt haben wir eine Kinderklasse mit dem Namen „Fruitdetails“, und diese Kinderklasse erbt die beiden gegebenen Elternklassen. Am Ende haben wir die Hauptklasse „getDetails“, in der wir eine Hauptmethode haben, und wir haben das Objekt der untergeordneten Klasse „FruitsDetails“ in der Hauptmethode erstellt. Diese Objekte berufen hier die Methode der übergeordneten Klassen, die im Code Unklarheiten verursacht.

In der Kompilierungszeit bringt das obige Programm eine Ausnahme aus, dass „Klassen nicht mehrere Basisklassen haben können“, wie im folgenden Bild gezeigt:

Beispiel Nr. 2: Implementierung der Schnittstelle für mehrere Vererbung

Auch wenn C# nicht mehrere Erbschaften mit Klassen implementiert, können wir es mit der Schnittstelle erreichen. Obwohl Schnittstellen eine vollständige Abstraktion liefern, können sie keine spezifischen Methoden enthalten.

Im vorherigen Code haben wir die Schnittstelle mit dem Schlüsselwort "Schnittstelle" erstellt, und die Schnittstelle erhält den Namen "Interface1". Wir haben nur eine Methode "Namen" und nichts anderes in der Schnittstelle erstellt. Dann haben wir eine übergeordnete Klasse „Student“ definiert, für die wir eine Schnittstelle erstellt haben. In der übergeordneten Klasse haben wir die Implementierung für die Methode „Namen“ zur Verfügung gestellt. In der Methode "Namen" haben wir eine Liste von Arrays als "Liste", in der wir zufällige Namen mit der Methode hinzufügen hinzufügen. Die Schreiblinie druckt die Listenelemente. Die Foreach -Schleife wird hier verwendet, um mit Hilfe der neu erstellten Variablen „Werte“ über jedes Listenelement zu iterieren.

Dann haben wir eine andere Schnittstelle, "Interface2", für die zweite übergeordnete Klasse erstellt. Die Schnittstelle hat nur die Methode „Probanden“. Wir haben unsere zweite übergeordnete Klasse, die die Schnittstellenmethode „Subjekte“ implementiert,. Dann haben wir die Elemente in der Liste wie in der ersten übergeordneten Klasse hinzugefügt. Als nächstes haben wir die untergeordnete Klasse "Details", die die beiden angegebenen Schnittstellen "Interface1" und "Interface2" erbt. In der untergeordneten Klasse haben wir die Objekte für die übergeordneten Klassen erstellt und auf die Methoden „Namen“ und „Themen“ zugegriffen. Die Methoden „Namen“ und „Fächer“ werden nicht geändert, da die Schnittstellen von der Kinderklasse geerbt werden. Am Ende des Code haben wir eine Hauptklasse „Demo“, um die Objekte der Kinderklasse zu erklären und die Ergebnisse anzuzeigen.

Das Folgende sind die Ergebnisse, die wir aus der Implementierung mehrerer Klassenvererbung unter Verwendung von Schnittstellen erzielt haben:

Beispiel 3: Implementierung der Schnittstelle erbt eine andere Schnittstelle

Die Vererbung von einer Schnittstelle zur anderen Schnittstelle ist in C# möglich. Wenn eine Klasse eine erbliche Schnittstelle definiert, muss alle Mitglieder in der Erbschaftskette implementiert werden. Beachten Sie, dass, wenn eine Klasse eine Schnittstelle verwendet, alle von dieser Schnittstelle bereitgestellten Methoden zusammen mit den Basisoberflächenmethoden implementiert werden müssen. Andernfalls wird vom Compiler ein Fehler geworfen. Wenn sowohl eine abgeleitete als auch eine Basisschnittstelle angegeben werden.

Im vorherigen Code haben wir eine Schnittstelle "Bücher" deklariert und eine Methode "book_no" in der Schnittstelle erstellt. Beachten Sie, dass wir keine Methode mit einem Zugriffsspezifizierer definiert haben. Standardmäßig sind Schnittstellenmethoden öffentlich. Wenn wir ihm einen Zugriffsspezifizier zuweisen, wirft der Compiler einen Fehler aus. Dann haben wir eine andere Schnittstelle implementiert, "Details", die die Schnittstelle "Bücher" erbt. Wir haben auch eine Methode für diese Schnittstelle. Die Klasse wird mit dem Namen „Autor“ erstellt, für den wir die vorherigen Schnittstellen implementiert haben. Die Klasse erbt nur die Schnittstelle „Details“, aber wir haben hier die Methoden der beiden Schnittstellen geerbt. Am Ende haben wir eine Treiberklasse „Demo“ definiert, in der wir ein Objekt für die Klasse „Autor“ erstellt haben und diese Objekte aufgerufen haben, um auf die Klassenmethoden „Autoren“ zuzugreifen. Dann haben wir die Werte an diese Methoden übergeben.

Das Folgende ist die Ausgabe, die wir von der Schnittstellenvererbung zu einer anderen Schnittstelle erhalten:

Abschluss

Wir haben das Mehrfachvererbungskonzept in C# besprochen. Und wir haben erfahren, dass in C nur ein einzelnes Erbe zulässig ist, obwohl mehrere Vererbung durch gleichzeitige Verwendung einer oder mehrerer Schnittstellen erreicht werden kann. Wir haben eine klare Definition der Schnittstelle zusammen mit ihrer Bedeutung. Wir haben auch die Schnittstelle im Beispielcode implementiert, um zu demonstrieren, wie die Schnittstelle in C# verwendet werden kann. Darüber hinaus ist die Verwendung von Schnittstellen sehr hilfreich, da sie die Implementierung einer Klasse aus der Außenwelt verbergen. Jetzt hoffe ich, dass Sie etwas über das vielfältige Erbe in C# erfahren haben. Weitere verwandte Themen zu C# sind unter Linux Hint erhältlich.