Forskjellen mellom abstrakt klasse og grensesnitt i C #

Abstrakt klasse
En abstrakt klasse er en som bare er ment å være en grunnklasse av andre klasser. Den 'abstrakte' modifikatoren brukes til å lage en klasse abstrakt. En abstrakt modifikator indikerer at det mangler noen implementering som må implementeres i klassen avledet av den. Den abstrakte klassen kan ha abstrakte og ikke-abstrakte medlemmer. En abstrakt klasse skal ha minst én abstrakt metode, ellers er det ikke bruk av å erklære denne klassen som «abstrakt».

Eksempel på abstrakt klasse i C #:

1234567891011 abstrakt klasse MyCircle abstrakt offentlig int område (); Klasse MyArea: MyCircle public override int Område () retur side * side; .....

Som vist i eksemplet ovenfor overstyres den abstrakte metoden 'Areal' inne i MyCircle-klassen i den avledede klassen MyArea.

Interface
Et grensesnitt inneholder bare deklarasjon av medlemmer, inkludert metoder, egenskaper, hendelser eller indeksere. Det inneholder ikke implementeringen av disse medlemmene. En klasse eller struktur implementerer grensesnittet, må gi definisjonen av metoder angitt i grensesnittet. Det betyr at et grensesnitt gir en standardstruktur som den avledede klassen må følge.

Eksempel på et grensesnitt i C #:

12345678910111213141516171819202122 bruker System.Collections.Generic; bruker System.Linq; bruker System.Text; namespace MyName public interface MyData void getdata (); void showdata (); offentlig klasse NameData: MyData public double getdata () strengnavn; Console.WriteLine ("Skriv inn navnet:"); name = Console.ReadLine (); offentlig ugyldig showdata () Console.WriteLine ("Mitt navn er:", navn);

Som vist i eksemplet ovenfor har grensesnittet MyData to metoden deklarasjon getdata () og showdata (). Klassen NameData som implementerer dette grensesnittet, bør gi definisjonen av metoder som er oppgitt i MyData-grensesnittet.

Forskjellen mellom abstrakt klasse og grensesnitt

  1. En abstrakt klasse kan ha abstrakte samt ikke-abstrakte medlemmer. Men i et grensesnitt er alle medlemmene implisitt abstrakte og må overstyres i den avledede klassen.
  2. En klasse kan arve flere grensesnitt, men bare en abstrakt klasse.
  3. En abstrakt klasse kan inneholde metoder med eller med en definisjon. Men et grensesnitt kan bare inneholde metodesignatur.
  4. En abstrakt klasse kan helt, delvis eller ikke implementeres i det hele tatt, men et grensesnitt skal være fullt implementert, det vil si at alle medlemmene må defineres i den avledende klassen.
  5. Et grensesnitt kan ikke inneholde tilgangsmodifikatorer, men en abstrakt klasse kan ha den for funksjoner, egenskaper eller hendelser.
DEN