C # Abstract vs Interface - Lernen Sie die wichtigsten Unterschiede kennen

Inhaltsverzeichnis:

Anonim

Unterschiede zwischen C # Abstract und Interface

Abstrakte Klasse und Schnittstelle sind sehr wichtige Methoden, um objektorientiertes Programmiertraining zu verstehen. Normalerweise sind beide für den Einstieg in die objektorientierte Programmierung sehr verwirrend. Wenn wir eine abstrakte Klasse definieren, aber nichts implementieren, dann sieht es absolut wie Interface aus, und niemand wird in der Lage sein, einen Unterschied zwischen ihnen zu verstehen, anstatt eine Deklaration. Es gibt jedoch viele Unterschiede und Ähnlichkeiten zwischen der Interface- und der Abstract-Klasse.

Eine abstrakte Klasse ist eine einfache Klasse, die als abstrakt definiert und nicht instanziiert werden kann. Eine abstrakte Klasse muss um einige Unterklassen erweitert werden, um alle Funktionen oder Nutzen dieser bestimmten Oberklasse oder abstrakten Klasse nutzen zu können. Tatsächlich hilft es, die richtige Hierarchie von Ober- oder Unterklassen beizubehalten. Mehrere Unterklassen können denselben Funktionsnamen mit unterschiedlichen Definitionen verwenden. Es stellt tatsächlich sicher, dass die Anwendung einer bestimmten Hierarchie oder bestimmten Standards folgen sollte, die die erklärbare Funktionalität der Anwendung unterstützen.

Die Schnittstelle ist absolut keine Klasse, sondern wie eine Entität, die durch ein bestimmtes Wort Interface definiert ist. Die Schnittstelle hat niemals eine Definition definiert, sondern hängt ausschließlich von einer bestimmten Deklaration ab, die von mehreren Klassen gleichzeitig geerbt werden soll. Mehrere Klassen können mehrere Definitionen dieser einzelnen Deklaration einer bestimmten Schnittstelle definieren. Es enthält auch die gleiche Art von Einrichtung wie die abstrakte Klasse. Es hilft hauptsächlich dabei, dieselbe Hierarchie von Unterklassen mit einer anderen Definition beizubehalten. Der Hauptunterschied zwischen abstrakter Klasse und Interface ist jedoch nicht bei mehreren abstrakten Klassen möglich, wohingegen das Erben mehrerer Interfaces möglich ist. Da C # mehrere Vererbungen nicht unterstützt, bietet die Schnittstelle dieselbe Funktionalität.

Head-to-Head Vergleich zwischen C # Abstract und Interface (Infografiken)

Nachfolgend finden Sie die wichtigsten Vergleiche zwischen C # Abstract und Interface

Hauptunterschiede zwischen C # Abstract und Interface

Im Folgenden werden einige wichtige Unterschiede zwischen C # Abstract und Interface erläutert

  1. Abstrakte Klasse und Schnittstelle werden tatsächlich von einer oder mehreren Unterklassen verwendet. Die Haupteinschränkung ist, dass eine Unterklasse nicht in der Lage ist, mehrere abstrakte Klassen zu erweitern, was bedeutet, dass mehrere Vererbungen nicht möglich sind, während die Unterklasse mehrere Schnittstellen gleichzeitig erben kann.
  2. Die Zusammenfassung kann den Körper mit einer Definition oder nur einer Definition einer Methode enthalten. Eine Unterklasse, die die abstrakte Klasse erweitert, die mit der body-Methode verwendet werden kann und die Bodydetails einer bestimmten Definition der abstrakten Methode erklären kann, bedeutet, dass ein Überschreiben möglich ist. Die abstrakte Klasse sollte mindestens eine abstrakte Methode haben (dh die einzige Definition der Methode ohne body). Interface hat nur die Definition der Methode, es sollte keine Body-Details der define-Methode enthalten. Eine Unterklassenvererbung, die solche Schnittstellen aufweist und verwendet, die die Methode nicht definieren, indem korrekte Rumpfdetails für mehrere Unterklassen dynamisch angegeben werden.
  3. Eine abstrakte Klasse kann verschiedene Zugriffsmodifizierer wie public, private oder protected haben, sodass jede Methode oder Eigenschaft in der abstrakten Klasse verschiedene Zugriffsmodifizierer definieren kann. Während für Interface keine Zugriffsmodifikatoren angegeben werden können, sollten alle in der Schnittstelle definierten Eigenschaften oder Methoden öffentliche Zugriffsmodifikatoren sein. Sie können jedoch keine anderen Zugriffsmodifikatoren in der Schnittstelle definieren.
  4. Das Konzept der Ober- und Unterklassen ist genau das Richtige für die abstrakte Klasse. Einer abstrakten Klasse kann die Kernidentität einer Unterklasse zugewiesen werden. Normalerweise enthält sie eine ähnliche Art von Objekt dieser bestimmten Unterklasse. Während Interface normalerweise eine bestimmte Art von peripherer Aktivität einer Klasse definiert. Angenommen, wir haben einen Schnittstellennamen: Moveable. Diese Schnittstelle kann jetzt sowohl von Auto als auch von Mensch geerbt werden. Während sowohl Autos als auch Menschen ein völlig anderes Klassenobjekt sind und keine Beziehung zwischen ihnen haben.
  5. Wenn die Anwendung über verschiedene Implementierungen verfügt, die Aktivität dieser spezifischen Implementierung jedoch nahezu identisch ist, empfiehlt es sich, die Abstract-Klasse zu verwenden, in der Sie diese spezifische Logik definieren können und die gesamte Unterklasse jederzeit problemlos auf dieselbe Logik zugreifen kann. Als Beispiel für eine Datenbankkonnektivität, die normalerweise von allen Unterklassen verwendet wird. Wenn also diese Konnektivitätserzeugung und dieser Abschlusscode in einer abstrakten Klasse enthalten sein können, ist es für jede Unterklasse sehr einfach, auf dieselbe zuzugreifen. Während mehrere Implementierungen nur die Signatur der Methode gemeinsam nutzen möchten, ist die Schnittstelle immer besser.

Vergleichstabelle C # Abstract vs Interface

Es folgt die Vergleichstabelle zwischen C # Abstract und Interface

BASIS FÜR

VERGLEICH

Abstrakte KlasseSchnittstelle
Mehrfache erbenEine Unterklasse kann nur eine abstrakte Klasse erweitern, nicht mehrere.Eine Unterklasse kann mehrere Schnittstellen implementieren, mit deren Hilfe wiederhergestellt werden kann, wenn die Mehrfachvererbungsfunktion von C # nicht unterstützt wird.
KlassendefinitionDie Schnittstelle definiert niemals einen bestimmten Körper einer Definition, sondern enthält nur die Definition, die später von der Unterklasse ordnungsgemäß implementiert wurde.Die Zusammenfassung kann den gesamten Körper mit Definition enthalten und kann auch die einzige Schnittstelle wie Definition enthalten, die von beliebigen Unterklassen überschrieben werden kann. Jede abstrakte Klasse sollte mindestens eine abstrakte Methode haben, die nur Definitionsdetails enthält. Der Body wird später in der Unterklasse beschrieben.
ZugriffsmodifikatorDie Schnittstelle enthält in ihrer Definition niemals einen Zugriffsmodifikator. Die Schnittstelle betrachtet normalerweise alle Eigenschaften als öffentlich.Eine abstrakte Klasse kann einen Zugriffsmodifikator für ihre Definition haben. So können alle Eigenschaften öffentlich, privat oder geschützt sein.
PerformanceNormalerweise wird wenig mehr Zeit benötigt, um die entsprechende Methode der Unterklasse herauszufinden.Es ist etwas schneller als das Interface.

Fazit

Die Klassen Interface und Abstract werden hauptsächlich zum intelligenten Verwalten mehrerer Implementierungen verwendet, sodass redundanter Code leicht vermieden werden kann und alles in der richtigen Hierarchie und Struktur vorliegt. Die Schnittstelle ist immer besser für die gemeinsame Nutzung derselben Signatur in mehreren Instanzen. Angenommen, Pantaloons haben eine Hauptniederlassung und mehrere Niederlassungen an einem anderen Standort. Jetzt kann ein bestimmtes Produkt an einem bestimmten Ort mit einem Ansatz gestartet werden, während es an einem anderen Ort mit einem anderen Ansatz gestartet wird. Sollte sich in diesem Fall die Logik für dasselbe Produkt an mehreren Standorten unterscheiden, kann diese Art der Logik besser von der Schnittstelle verarbeitet werden. Das gleiche Produkt weist möglicherweise einige gemeinsame Merkmale auf, die zum Zeitpunkt der Produkteinführung in jeder Branche hervorgehoben werden müssen. In diesem Fall fügen Sie zur Vermeidung von Code-Redundanz dieselbe Logik in die abstrakte Klasse ein und können sie in mehreren Implementierungen in verschiedenen Zweigen verwenden.

Empfohlener Artikel

Dies ist ein nützlicher Leitfaden für die Unterschiede zwischen C # -Zusammenfassung und Schnittstelle. Hier wird der Vergleich von Kopf zu Kopf erörtert, ein wesentlicher Unterschied zu Infografiken. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren -

  1. C # -Schnittstelle gegen abstrakte Klasse
  2. Java-Schnittstelle gegen abstrakte Klasse
  3. Typoskript-Schnittstelle vs Klasse
  4. TypeScript Type vs Interface
  5. Zugriffsmodifikatoren in PHP
  6. Abstrakte Klassen in JavaScript