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

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

Klasa abstrakcyjna

Klasa abstrakcyjna to taka, która ma być podstawową klasą innych klas. Modyfikator „Streszczenie” służy do tworzenia abstrakcji klasy. Abstrakcyjny modyfikator wskazuje, że istnieje pewna brak wdrożenia, które należy zaimplementować w klasie pochodzącej z niego. Klasa abstrakcyjna może mieć członków abstrakcyjnych i nie-abstrakcyjnych. Klasa abstrakcyjna powinna mieć co najmniej jedną metodę abstrakcyjną, w przeciwnym razie nie ma zastosowania deklarowania tej klasy jako „abstrakcyjnych.'

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

Interfejs

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

Przykład interfejsu w C#:
Jak pokazano w powyższym przykładzie, interfejs MyData ma dwie deklaracje metod getData () i showData (). Klasa o nazwie, która wdraża ten interfejs, powinna podać definicję metod zadeklarowanych w interfejsie MyData.

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

  1. Klasa abstrakcyjna może mieć streszczenie, a także członkowie nie-abstrakcyjne. Ale w interfejsie wszyscy członkowie są domyślnie abstrakcyjne i muszą zostać zastąpione w klasie pochodnej.
  2. Klasa może odziedziczyć kilka interfejsów, ale tylko jedna klasa abstrakcyjna.
  3. Klasa abstrakcyjna może zawierać metody z definicją lub z. Ale interfejs może zawierać tylko podpis metody.
  4. Klasa abstrakcyjna może w pełni, częściowo lub nie zaimplementować, ale interfejs powinien zostać w pełni zaimplementowany, i.mi., Wszyscy członkowie muszą być zdefiniowane w klasie pochodzenia.
  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ń.