Soovitatav, 2024

Toimetaja Valik

Abstraktse klassi ja liidese erinevus C #

Abstraktne klass
Abstraktne klass on selline, mis on mõeldud ainult teiste klasside põhiklassiks. „Abstraktset” modifikaatorit kasutatakse klassi abstrakti tegemiseks. Abstraktne modifikaator näitab, et mõningaid puuduvaid rakendusi tuleb rakendada sellest tuletatud klassis. Abstraktsel klassil võivad olla abstraktsed ja abstraktsed liikmed. Abstraktsel klassil peaks olema vähemalt üks abstraktne meetod, vastasel juhul ei ole võimalik seda klassi „abstraktseks” kuulutada.

Näide abstraktsest klassist C #:

abstraktne klass MyCircle {abstraktne avalik int Area (); } Klass MyArea: MyCircle {avalikkuse ülekirjutamine ala () {tagasipoolne pool * pool; .....}}
1 2 3 4 5 6 7 8 9 10 11abstraktne klass MyCircle {abstraktne avalik int Area (); } Klass MyArea: MyCircle {avalikkuse ülekirjutamine ala () {tagasipoolne pool * pool; . . . . . }}

Nagu on näidatud ülaltoodud näites, on MyCircle'i klassi sees olev abstraktsest meetodist MyArea tühistatud abstraktne meetod.

Liides
Liides sisaldab ainult liikmete deklaratsiooni, sealhulgas meetodeid, omadusi, sündmusi või indekseerijaid. See ei sisalda nende liikmete rakendamist. Klass või struktuur rakendab liidest, peab esitama liideses deklareeritud meetodite määratluse. See tähendab, et liides pakub standardstruktuuri, mida tuletatud klass peab järgima.

Näide C # liidesest:

System.Collections.Generic; kasutades System.Linq; System.Text; nimeruumi MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {string name; Console.WriteLine ("Sisesta nimi:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Minu nimi on:", nimi); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22kasutades süsteemi. Kogud. Üldine; kasutades süsteemi. Linq; kasutades süsteemi. Tekst; nimeruumi MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {string name; Konsool. WriteLine ("Sisesta nimi:"); nimi = konsool. ReadLine (); } public void showdata () {Konsool. WriteLine ("Minu nimi on:", nimi); }}}

Nagu on näidatud ülaltoodud näites, on liidesel MyData kaks meetodite deklaratsiooni getdata () ja showdata (). Klass NameData, kes rakendab seda liidest, peaks andma MyData liideses deklareeritud meetodite määratluse.

Abstraktse klassi ja liidese erinevus

  1. Abstraktsel klassil võivad olla nii abstraktsed kui ka mitte abstraktsed liikmed. Kuid liideses on kõik liikmed kaudselt abstraktsed ja tuletatud klassis tuleb need üle kanda.
  2. Klass võib pärida mitu liidest, kuid ainult ühe abstraktse klassi.
  3. Abstraktne klass võib sisaldada meetodeid, millel on või on mõiste. Kuid liides võib sisaldada ainult meetodi allkirja.
  4. Abstraktset klassi saab täielikult, osaliselt või üldse mitte rakendada, kuid liides peaks olema täielikult rakendatud, st kõik liikmed peavad olema tuletatud klassi.
  5. Liides ei tohi sisaldada juurdepääsu modifikaatoreid, kuid abstraktsel klassil on see funktsioonide, omaduste või sündmuste jaoks.
Top