En abstrakt klasse er en, der kun er beregnet til at være en base klasse af andre klasser. Den 'abstrakte' modifikator bruges til at lave en klasse abstrakt. En abstrakt modifikator indikerer, at der mangler en manglende implementering, der skal implementeres i klassen afledt af den. Den abstrakte klasse kan have abstrakte og ikke-abstrakte medlemmer. En abstrakt klasse skal have mindst en abstrakt metode, ellers er der ikke brug for at erklære denne klasse 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 11 | abstrakt klasse MyCircle {abstrakt offentlig int område (); } Klasse MyArea: MyCircle {public override int Område () {retur side * side; . . . . . }} |
Som vist i ovenstående eksempel er den abstrakte metode 'Area' inde i MyCircle-klassen overskredet i den afledte klasse MyArea.
grænseflade
En grænseflade indeholder kun medlemmernes erklæring, herunder metoder, egenskaber, arrangementer eller indeksere. Det indeholder ikke implementeringen af disse medlemmer. En klasse eller struktur implementerer grænsefladen, skal give definitionen af metoder, der er angivet i grænsefladen. Det betyder, at en grænseflade giver en standardstruktur, som den afledte klasse skal følge.
Eksempel på et grænseflade i C #:
ved hjælp af System.Collections.Generic; ved hjælp af System.Linq; ved hjælp af System.Text; navneområde MyName {offentlig grænseflade MyData {void getdata (); void showdata (); } offentlig klasse NameData: MyData {public double getdata () {streng navn; Console.WriteLine ("Indtast navnet:"); navn = Console.ReadLine (); } offentlig ugyldig showdata () {Console.WriteLine ("Mit navn er:", navn); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | bruger system. Samlinger. Generisk; bruger system. Linq; bruger system. Tekst; navneområde MyName {offentlig grænseflade MyData {void getdata (); void showdata (); } offentlig klasse NameData: MyData {public double getdata () {streng navn; Konsol. WriteLine ("Indtast navnet:"); navn = konsol. ReadLine (); } offentlig ugyldig showdata () {Console. WriteLine ("Mit navn er:", navn); }}} |
Som vist i ovenstående eksempel har grænsefladen MyData to metoden deklaration getdata () og showdata (). Klassen NameData, der implementerer denne grænseflade, skal give definitionen af metoder, der er angivet i MyData-grænsefladen.
Forskel mellem abstrakt klasse og interface
- En abstrakt klasse kan have abstrakte såvel som ikke-abstrakte medlemmer. Men i en grænseflade er alle medlemmer implicit abstrakte og skal overskrides i den afledte klasse.
- En klasse kan arve flere grænseflader, men kun en abstrakt klasse.
- En abstrakt klasse kan indeholde metoder med eller med en definition. Men en grænseflade kan kun indeholde metodesignatur.
- En abstrakt klasse kan helt, delvist eller ikke implementeres overhovedet, men en grænseflade skal implementeres fuldt ud, dvs. alle medlemmer skal defineres i afledningsklassen.
- En grænseflade kan ikke indeholde adgangsmodifikatorer, men en abstrakt klasse kan få den til funktioner, egenskaber eller begivenheder.