Suositeltava, 2024

Toimituksen Valinta

Tiivistysluokan ja rajapinnan välinen ero C #: ssä

Abstrakti luokka
Abstrakti luokka on tarkoitettu vain muiden luokkien perusluokkaan. ”Abstraktia” modifikaattoria käytetään luokan abstraktin tekemiseen. Abstrakti modifikaattori osoittaa, että on olemassa puuttuva toteutus, joka on toteutettava siitä johdetussa luokassa. Abstraktilla luokalla voi olla abstrakteja ja abstrakteja jäseniä. Abstraktilla luokalla olisi oltava vähintään yksi abstrakti menetelmä, muuten ei ole mahdollista julistaa kyseistä luokkaa "abstraktiksi".

Esimerkki tiivistelmäluokasta C #:

abstrakti luokka MyCircle {abstract public int Alue (); } Luokka MyArea: MyCircle {public override int Area () {paluupuoli * puoli; .....}}
1 2 3 4 5 6 7 8 9 10 11abstrakti luokka MyCircle {abstract public int Alue (); } Luokka MyArea: MyCircle {public override int Area () {paluupuoli * puoli; . . . . . }}

Kuten edellä olevassa esimerkissä on esitetty, MyCircle-luokan sisällä oleva abstrakti menetelmä "Alue" ohitetaan johdetussa luokassa MyArea.

liitäntä
Liitäntä sisältää vain jäsenten ilmoituksen, mukaan lukien menetelmät, ominaisuudet, tapahtumat tai indeksoijat. Se ei sisällä näiden jäsenten toteutusta. Luokka tai rakenne toteuttaa käyttöliittymän, sen on annettava rajapinnassa ilmoitettujen menetelmien määrittely. Tämä tarkoittaa, että rajapinta tarjoaa standardirakenteen, jota johdetun luokan on noudatettava.

Esimerkki C # -liitännästä:

käyttäen System.Collections.Generic; System.Linqin avulla; System.Textin avulla; nimiavaruus MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {string name; Console.WriteLine (Kirjoita nimi:); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Nimeni on:", nimi); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22käyttämällä järjestelmää. Kokoelmat. Yleinen; käyttämällä järjestelmää. Linq; käyttämällä järjestelmää. Teksti; nimiavaruus MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {string name; Konsoli. WriteLine (Kirjoita nimi:); name = Konsoli. Lue rivi ( ) ; } public void showdata () {Console. WriteLine ("Nimeni on:", nimi); }}}

Kuten edellä olevasta esimerkistä käy ilmi, rajapinnalla MyData on kaksi menetelmäilmoitusta getdata () ja showdata (). Luokan NameData, joka toteuttaa tämän käyttöliittymän, tulisi antaa MyData-käyttöliittymässä ilmoitettujen menetelmien määritelmä.

Tiivistelmäluokan ja rajapinnan välinen ero

  1. Abstraktilla luokalla voi olla sekä abstrakteja että abstrakteja jäseniä. Mutta rajapinnassa kaikki jäsenet ovat epäsuorasti abstrakteja ja ne on ohitettava johdetussa luokassa.
  2. Luokka voi periä useita rajapintoja, mutta vain yhden abstraktin luokan.
  3. Abstrakti luokka voi sisältää menetelmiä, joissa on määritelmä. Liitäntä voi kuitenkin sisältää vain menetelmän allekirjoituksen.
  4. Abstrakti luokka voi olla kokonaan, osittain tai kokonaan toteutumaton, mutta käyttöliittymä on toteutettava täysin, eli kaikki jäsenet on määriteltävä johdottavassa luokassa.
  5. Liitäntä ei voi sisältää käyttömodifikaattoreita, mutta abstrakti luokka voi saada sen toimintoja, ominaisuuksia tai tapahtumia varten.
Top