Anbefalt, 2024

Redaksjonens

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 er noen manglende 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 en abstrakt metode, ellers er det ikke bruk av å erklære denne klassen som «abstrakt».

Eksempel på abstrakt klasse i C #:

abstrakt klasse MyCircle {abstrakt offentlig int område (); } Klasse MyArea: MyCircle {public override int Område () {retur side * side; .....}}
1 2 3 4 5 6 7 8 9 10 11abstrakt 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 'Område' 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 #:

bruker System.Collections.Generic; bruker System.Linq; bruker System.Text; namespace MyName {offentlige grensesnitt 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); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22bruker system. Samlinger. Generisk; bruker system. Linq; bruker system. Tekst; namespace MyName {offentlige grensesnitt MyData {void getdata (); void showdata (); } offentlig klasse NameData: MyData {public double getdata () {strengnavn; Konsoll. WriteLine ("Skriv inn navnet:"); navn = konsoll. 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 deklarert i MyData-grensesnittet.

Forskjellen mellom abstrakt klasse og grensesnitt

  1. En abstrakt klasse kan ha abstrakte og 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 avledningsklassen.
  5. Et grensesnitt kan ikke inneholde tilgangsmodifikatorer, men en abstrakt klasse kan ha den for funksjoner, egenskaper eller hendelser.
Top