Różnica między klasą abstrakcyjną a interfejsem w języku C #

Klasa abstrakcyjna

Klasa abstrakcyjna to klasa, która ma być jedynie klasą bazową innych klas. Modyfikator „abstrakcyjny” służy do tworzenia abstraktu klasowego. Modyfikator abstrakcyjny wskazuje, że brakuje pewnej implementacji, którą należy zaimplementować w klasie pochodnej. Klasa abstrakcyjna może mieć elementy abstrakcyjne i nieabstrakcyjne. Klasa abstrakcyjna powinna mieć co najmniej jedną metodę abstrakcyjną, w przeciwnym razie nie ma potrzeby deklarowania tej klasy jako „abstrakcyjnej”.

Przykład klasy abstrakcyjnej w C #:
Jak pokazano w powyższym przykładzie, abstrakcyjna metoda „Area” wewnątrz klasy MyCircle jest zastępowana w klasie pochodnej MyArea.

Berło

Interfejs zawiera tylko deklarację członków, w tym metody, właściwości, zdarzenia lub indeksatory. Nie zawiera implementacji tych członków. Klasa lub struktura implementuje interfejs, musi zawierać definicję metod zadeklarowanych w interfejsie. Oznacza to, że interfejs zapewnia standardową strukturę, którą musi przestrzegać klasa pochodna.

Przykład interfejsu w C #:
Jak pokazano w powyższym przykładzie interfejs MyData ma dwie deklaracje metod getdata () i showdata (). Klasa NameData, która implementuje ten interfejs, powinna podać definicję metod zadeklarowanych w interfejsie MyData.

Różnica między klasą abstrakcyjną a interfejsem

  1. Klasa abstrakcyjna może mieć zarówno elementy abstrakcyjne, jak i nieabstrakcyjne. Ale w interfejsie wszystkie elementy są domyślnie abstrakcyjne i muszą zostać zastąpione w klasie pochodnej.
  2. Klasa może odziedziczyć kilka interfejsów, ale tylko jedną klasę abstrakcyjną.
  3. Klasa abstrakcyjna może zawierać metody z definicją lub z nią. Ale interfejs może zawierać tylko podpis metody.
  4. Klasa abstrakcyjna może być w pełni, częściowo lub wcale nie zaimplementowana, ale interfejs powinien być w pełni zaimplementowany, tj. Wszyscy członkowie muszą być zdefiniowani w klasie pochodnej.
  5. Interfejs nie może zawierać modyfikatorów dostępu, ale klasa abstrakcyjna może mieć go dla funkcji, właściwości lub zdarzeń.
TO