Forskellen mellem abstrakt klasse og interface i C #

Abstrakt klasse

En abstrakt klasse er en, der kun er beregnet til at være en baseklasse for andre klasser. Den 'abstrakte' modifikator bruges til at fremstille en klassesabstrakt. En abstrakt modifikator angiver, at der er en vis manglende implementering, der skal implementeres i klassen, der er afledt af den. Den abstrakte klasse kan have abstrakte og ikke-abstrakte medlemmer. En abstrakt klasse skal have mindst én abstrakt metode, ellers er der ingen brug af at erklære denne klasse som 'abstrakt'.

Eksempel på abstrakt klasse i C #:
Som vist i ovenstående eksempel overstyres den abstrakte metode 'Område' inde i MyCircle-klassen i den afledte klasse MyArea.

grænseflade

En grænseflade indeholder kun erklæringen af ​​medlemmer, herunder metoder, egenskaber, begivenheder eller indeksere. Det indeholder ikke implementeringen af ​​disse medlemmer. En klasse eller struktur implementerer grænsefladen, skal give definitionen af ​​metoder, der er erklæret i grænsefladen. Det betyder, at en grænseflade giver en standardstruktur, som den afledte klasse skal følge.

Eksempel på en grænseflade i C #:
Som vist i ovenstående eksempel har grænsefladen MyData to metodedeklarations-getdata () og showdata (). Klassen NameData, der implementerer denne grænseflade, skal give definitionen af ​​metoder, der er erklæret i MyData-grænsefladen.

Forskel mellem abstrakt klasse og interface

  1. En abstrakt klasse kan have såvel abstrakte som ikke-abstrakte medlemmer. Men i en grænseflade er alle medlemmerne implicit abstrakte og skal tilsidesættes i den afledte klasse.
  2. En klasse kan arve flere grænseflader, men kun en abstrakt klasse.
  3. En abstrakt klasse kan indeholde metoder med eller med en definition. Men en grænseflade kan kun indeholde metodesignatur.
  4. En abstrakt klasse kan overhovedet, delvist eller ikke implementeres, men en grænseflade skal implementeres fuldt ud, dvs. alle medlemmer skal defineres i den deriverende klasse.
  5. En grænseflade kan ikke indeholde adgangsmodifikatorer, men en abstrakt klasse kan have den til funktioner, egenskaber eller begivenheder.
DET