Zalecane, 2024

Wybór Redakcji

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

Klasa abstrakcyjna
Klasa abstrakcyjna to taka, która ma być jedynie klasą bazową innych klas. Modyfikator "abstrakcyjny" służy do abstrakcji klasy. Modyfikator abstrakcyjny wskazuje, że istnieje brakująca implementacja, która musi zostać zaimplementowana w klasie pochodnej. Klasa abstrakcyjna może mieć abstrakcyjnych i nie abstrakcyjnych członków. Klasa abstrakcyjna powinna mieć co najmniej jedną metodę abstrakcyjną, w przeciwnym razie nie ma sensu deklarowanie tej klasy jako "abstrakcyjnej".

Przykład klasy abstrakcyjnej w języku C #:

Klasa abstrakcyjna MyCircle {abstract public int Area (); } Class MyArea: MyCircle {public override int Area () {strona powrotu * strona; .....}}
1 2 3 4 5 6 7 8 9 10 11Klasa abstrakcyjna MyCircle {abstract public int Area (); } Class MyArea: MyCircle {public override int Area () {strona powrotu * strona; . . . . . }}

Jak pokazano w powyższym przykładzie, abstrakcyjna metoda "Obszar" w klasie MyCircle jest nadpisywana 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 podać definicję metod zadeklarowanych w interfejsie. Oznacza to, że interfejs zapewnia standardową strukturę, której musi przestrzegać klasa pochodna.

Przykład interfejsu w języku C #:

przy użyciu System.Collections.Generic; przy użyciu System.Linq; using System.Text; namespace MyName {interfejs publiczny MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {nazwa łańcucha; Console.WriteLine ("Enter the name:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Moje imię to:", nazwa); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22przy użyciu systemu. Kolekcje. Rodzajowy ; przy użyciu systemu. Linq; przy użyciu systemu. Tekst; namespace MyName {interfejs publiczny MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {nazwa łańcucha; Konsola. WriteLine ("Wprowadź nazwę:"); name = Console. Czytaj linię ( ) ; } public void showdata () {Console. WriteLine ("Moje imię to:", nazwa); }}}

Jak pokazano w powyższym przykładzie interfejs MyData ma dwie deklaracje metody 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 zawierać elementy abstrakcyjne i nie abstrakcyjne. Ale w interfejsie wszyscy członkowie są niejawnie abstrakcyjni i muszą zostać nadpisani w klasie pochodnej.
  2. Klasa może dziedziczyć kilka interfejsów, ale tylko jedną klasę abstrakcyjną.
  3. Klasa abstrakcyjna może zawierać metody z definicją lub z nią zdefiniowaną. Ale interfejs może zawierać tylko sygnaturę metody.
  4. Klasa abstrakcyjna może w pełni, częściowo lub wcale nie zostać zaimplementowana, ale interfejs powinien zostać w pełni zaimplementowany, tzn. Wszyscy członkowie muszą być zdefiniowani w klasie pochodnej.
  5. Interfejs nie może zawierać modyfikatorów dostępu, ale klasa abstrakcyjna może je zawierać dla funkcji, właściwości lub zdarzeń.
Top