Unterschied zwischen abstrakter Klasse und Schnittstelle in C#

Unterschied zwischen abstrakter Klasse und Schnittstelle in C#

Abstrakte Klasse

Eine abstrakte Klasse ist eine, die nur eine Grundklasse anderer Klassen sein soll. Der "abstrakte" Modifikator wird verwendet, um eine Klasse zum Zusammenfassung zu machen. Ein abstrakter Modifikator zeigt an, dass es eine fehlende Implementierung gibt, die in der daraus abgeleiteten Klasse implementiert werden muss. Die abstrakte Klasse kann abstrakte und nicht abstrakte Mitglieder haben. Eine abstrakte Klasse sollte mindestens eine abstrakte Methode haben. Andernfalls wird die Klasse diese Klasse als "Abstract" nicht erklärt.''

Beispiel einer abstrakten Klasse in C#:
Wie im obigen Beispiel gezeigt, wird die abstrakte Methode "Bereich" innerhalb der MyCircle -Klasse in der abgeleiteten Klasse MyAarea überschrieben.

Schnittstelle

Eine Schnittstelle enthält nur die Erklärung von Mitgliedern, einschließlich Methoden, Eigenschaften, Ereignissen oder Indexer. Es enthält nicht die Implementierung dieser Mitglieder. Eine Klasse oder Struktur implementiert die Schnittstelle, muss die Definition der in der Schnittstelle deklarierten Methoden liefern. Das bedeutet, dass eine Schnittstelle eine Standardstruktur bietet, die der abgeleiteten Klasse folgen muss.

Beispiel einer Schnittstelle in C#:
Wie im obigen Beispiel gezeigt, hat die Schnittstelle mydata zwei Methodenerklärungen getData () und showdata (). Die Klasse namedata, die diese Schnittstelle implementiert.

Unterschied zwischen abstrakter Klasse und Schnittstelle

  1. Eine abstrakte Klasse kann sowohl abstrakte als auch nicht abstrakte Mitglieder haben. In einer Schnittstelle sind jedoch alle Mitglieder implizit abstrakt und müssen in der abgeleiteten Klasse überschrieben werden.
  2. Eine Klasse kann mehrere Schnittstellen erben, aber nur eine abstrakte Klasse.
  3. Eine abstrakte Klasse kann Methoden mit oder mit einer Definition enthalten. Eine Schnittstelle kann jedoch nur Methodensignatur enthalten.
  4. Eine abstrakte Klasse kann vollständig, teilweise oder gar nicht implementiert, aber eine Schnittstelle sollte vollständig implementiert werden, i.e., Alle Mitglieder müssen in der abgeleiteten Klasse definiert werden.
  5. Eine Schnittstelle kann keine Zugriffsmodifikatoren enthalten, aber eine abstrakte Klasse kann sie für Funktionen, Eigenschaften oder Ereignisse haben.