Abstraktni razred je tisti, ki je namenjen samo osnovnemu razredu drugih razredov. 'Abstraktni' modifikator se uporablja za izdelavo povzetka razreda. Abstraktni modifikator kaže, da obstaja nekaj manjkajočih izvedb, ki jih je treba izvesti v razredu, ki izhaja iz njega. Abstraktni razred ima lahko abstraktne in ne abstraktne člane. Abstraktni razred mora imeti vsaj eno abstraktno metodo, drugače pa tega razreda ni mogoče uporabiti kot „abstraktne“.
Primer abstraktnega razreda v C #:
abstraktni razred MyCircle {abstraktno javno int območje (); } Razred MyArea: MyCircle {public override int Area () {povratna stran * stran; .....}}1 2 3 4 5 6 7 8 9 10 11 | abstraktni razred MyCircle {abstraktno javno int območje (); } Razred MyArea: MyCircle {public override int Area () {povratna stran * stran; . . . . . }} |
Kot je prikazano v zgornjem primeru, je abstraktna metoda 'Area' znotraj razreda MyCircle razveljavljena v izpeljanem razredu MyArea.
Vmesnik
Vmesnik vsebuje samo izjavo članov, vključno z metodami, lastnostmi, dogodki ali kazalci. Ne vsebuje izvajanja teh članov. Razred ali struktura izvaja vmesnik, mora zagotoviti definicijo metod, deklariranih v vmesniku. To pomeni, da vmesnik zagotavlja standardno strukturo, ki jo mora izvesti razred.
Primer vmesnika v C #:
z uporabo System.Collections.Generic; z uporabo System.Linq; z uporabo System.Text; imenski prostor MyName {javni vmesnik MyData {void getdata (); void showdata (); } public class NameData: MyData {javno dvojno getdata () {ime niza; Console.WriteLine ("Vnesite ime:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Moje ime je:", ime); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | z uporabo sistema. Zbirke. Generic; z uporabo sistema. Linq; z uporabo sistema. Besedilo; imenski prostor MyName {javni vmesnik MyData {void getdata (); void showdata (); } public class NameData: MyData {javno dvojno getdata () {ime niza; Konzola. WriteLine ("Vnesite ime:"); name = Konzola. ReadLine (); } javne void showdata () {konzola. WriteLine ("Moje ime je:", ime); }}} |
Kot je prikazano v zgornjem primeru, ima vmesnik MyData dve metodi deklaracije getdata () in showdata (). Razred NameData, ki izvaja ta vmesnik, mora podati definicijo metod, deklariranih v vmesniku MyData.
Razlika med abstraktnim razredom in vmesnikom
- Abstraktni razred ima lahko abstraktne in ne-abstraktne člane. Toda v vmesniku so vsi člani implicitno abstraktni in jih je treba izvesti v izpeljanem razredu.
- Razred lahko podeduje več vmesnikov, vendar samo en abstraktni razred.
- Abstraktni razred lahko vsebuje metode z ali z definicijo. Vendar pa lahko vmesnik vsebuje samo podpis metode.
- Abstraktni razred se lahko v celoti, delno ali sploh ne izvaja, vendar je treba v celoti izvajati vmesnik, tj. Vsi člani morajo biti definirani v izpeljanem razredu.
- Vmesnik ne more vsebovati modifikatorjev dostopa, vendar ga lahko abstraktni razred uporablja za funkcije, lastnosti ali dogodke.