Ieteicams, 2024

Redaktora Izvēle

Atšķirība starp abstrakto klasi un saskarni C #

Abstrakta klase
Abstrakta klase ir tāda, kas paredzēta tikai citu klašu pamatklasei. “Abstrakts” modifikators tiek izmantots, lai izveidotu klases abstraktu. Abstrakts modifikators norāda, ka trūkst īstenošanas, kas jāīsteno klasē, kas iegūta no tā. Abstraktajai klasei var būt abstrakti un abstrakti locekļi. Abstraktai klasei ir jābūt vismaz vienai abstraktajai metodei, pretējā gadījumā nav lietderīgi šo klasi pasludināt par “abstraktu”.

C #: Abstract klases piemērs:

abstrakta klase MyCircle {abstrakta publiska zona (); } Klases MyArea: MyCircle {public override int Platība () {atpakaļ puse * pusē; .....}}
1 2 3 4 5 6 7 8 9 10 11abstrakta klase MyCircle {abstrakta publiska zona (); } Klases MyArea: MyCircle {public override int Platība () {atpakaļ puse * pusē; . . . . . }}

Kā parādīts iepriekš minētajā piemērā, abstrakta metode My Areaclass iekšpusē MyArea ir pārsniegta.

Saskarne
Saskarne satur tikai dalībnieku deklarāciju, tostarp metodes, īpašības, notikumus vai rādītājus. Tas neietver šo dalībnieku īstenošanu. Klase vai struktūra īsteno saskarni, nodrošina saskarnē deklarēto metožu definīciju. Tas nozīmē, ka saskarne nodrošina standarta struktūru, kas jāievēro atvasinātajai klasei.

C # interfeisa piemērs:

izmantojot System.Collections.Generic; izmantojot System.Linq; izmantojot System.Text; namespace MyName {public interface MyData {void getdata (); void showdata (); } publiskā klase NameData: MyData {public double getdata () {string name; Console.WriteLine ("Ievadiet vārdu:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Mans vārds ir:", nosaukums); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22izmantojot sistēmu. Kolekcijas. Vispārējs ; izmantojot sistēmu. Linq; izmantojot sistēmu. Teksts; namespace MyName {public interface MyData {void getdata (); void showdata (); } publiskā klase NameData: MyData {public double getdata () {string name; Konsole . WriteLine ("Ievadiet vārdu:"); name = konsole. ReadLine (); } public void showdata () {Console. WriteLine ("Mans vārds ir:", vārds); }}}

Kā parādīts iepriekš minētajā piemērā, saskarnei MyData ir divas metodes deklarācija getdata () un showdata (). Klase NameData, kas īsteno šo saskarni, sniedz MyData saskarnē deklarēto metožu definīciju.

Atšķirība starp abstrakto klasi un saskarni

  1. Abstraktai klasei var būt gan abstrakti, gan abstrakti locekļi. Bet saskarnē visi locekļi ir netieši abstrakti, un atvasinātajā klasē tie ir jānovērš.
  2. Klase var mantot vairākas saskarnes, bet tikai viena abstrakta klase.
  3. Abstraktā klasē var būt metodes ar definīciju vai ar to. Taču saskarne var saturēt tikai metodes parakstu.
  4. Abstraktajai klasei var būt pilnībā, daļēji vai vispār neīstenota, bet saskarne būtu pilnībā jāīsteno, ti, visi dalībnieki ir jānosaka atvasināšanas klasē.
  5. Interfeiss nevar saturēt piekļuves modifikatorus, bet abstraktajai klasei to var piešķirt funkcijām, īpašībām vai notikumiem.
Top