Unterschied zwischen abstrakter Klasse und Schnittstelle in C #

Abstrakte Klasse
Eine abstrakte Klasse ist eine Klasse, die nur als Basisklasse anderer Klassen gedacht ist. Der Modifikator 'abstract' wird verwendet, um eine Klasse abstrakt darzustellen. Ein abstrakter Modifikator gibt an, dass einige Implementierungen fehlen, die in der daraus abgeleiteten Klasse implementiert werden müssen. Die abstrakte Klasse kann abstrakte und nicht abstrakte Mitglieder haben. Eine abstrakte Klasse sollte mindestens eine abstrakte Methode haben, andernfalls kann diese Klasse nicht als 'abstrakt' deklariert werden.

Beispiel für eine abstrakte Klasse in C #:

1234567891011 abstrakte Klasse MyCircle abstract public int Area (); Klasse MyArea: MyCircle public override int Area () Rückkehrseite * side; .....

Wie im obigen Beispiel gezeigt, wird die abstrakte Methode 'Area' in der MyCircle-Klasse in der abgeleiteten Klasse MyArea überschrieben.

Schnittstelle
Eine Schnittstelle enthält nur die Deklaration von Elementen, einschließlich Methoden, Eigenschaften, Ereignissen oder Indexern. Es enthält nicht die Implementierung dieser Mitglieder. Eine Klasse oder Struktur implementiert die Schnittstelle. Sie muss die Definition der in der Schnittstelle deklarierten Methoden bereitstellen. Das bedeutet, dass eine Schnittstelle eine Standardstruktur bereitstellt, der die abgeleitete Klasse folgen muss.

Beispiel einer Schnittstelle in C #:

12345678910111213141516171819202122 using System.Collections.Generic; using System.Linq; using System.Text; Namespace MyName öffentliche Schnittstelle MyData void getdata (); void showdata (); public class NameData: MyData public double getdata () Zeichenfolgenname; Console.WriteLine ("Geben Sie den Namen ein:"); name = Console.ReadLine (); public void showdata () Console.WriteLine ("Mein Name ist:", Name);

Wie im obigen Beispiel gezeigt, enthält die Schnittstelle MyData die Methodendeklaration getdata () und showdata (). Die Klasse NameData, die diese Schnittstelle implementiert, sollte die Definition der in der MyData-Schnittstelle deklarierten Methoden angeben.

Unterschied zwischen abstrakter Klasse und Schnittstelle

  1. Eine abstrakte Klasse kann sowohl abstrakte als auch nicht abstrakte Elemente enthalten. In einer Schnittstelle sind jedoch alle Member 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 die Methodensignatur enthalten.
  4. Eine abstrakte Klasse kann vollständig, teilweise oder überhaupt nicht implementiert werden, eine Schnittstelle sollte jedoch vollständig implementiert sein, d. H. Alle Mitglieder müssen in der abgeleiteten Klasse definiert sein.
  5. Eine Schnittstelle kann keine Zugriffsmodifizierer enthalten, aber eine abstrakte Klasse kann Funktionen, Eigenschaften oder Ereignisse enthalten.
ES