Ero abstraktin luokan ja käyttöliittymän välillä C # ssä

Abstrakti luokka näyttää paljon rajapinnalta, mutta konsepti on hieman hämmentävä OOP: n aloittelijoille. Konseptuaalisesti abstrakti luokka näyttää aivan rajapinnalta, tietenkin, ilman toteutusta, mutta heillä on kohtuullinen osuus eroista. Vaikka abstrakti luokka voidaan toteuttaa joko osittain tai kokonaan, rajapinta on toteutettava kokonaan. No, merkittävin ero näiden kahden välillä on se, että abstraktilla luokalla voi olla oletustoiminto, kun taas käyttöliittymä on vain menetelmien määritelmä, joka sisältää vain jäsenilmoitukset. Keskustelemme yksityiskohtaisesti molempien teoreettisista puolista.

Mikä on abstrakti luokka?

Abstrakti luokka on erityinen luokkatyyppi, joka toimii pohjana muille luokille eikä sitä voida toteuttaa. Abstraktin luokan toteutuslogiikan tuottavat johdetut luokat. Luokan abstraktiksi tekemiseksi käytetään ”abstraktia” modifikaattoria, mikä tarkoittaa, että puuttuva toteutus on toteutettava siitä johdetussa luokassa. Se sisältää sekä abstrakteja että ei-abstrakteja jäseniä. Abstraktin luokan on tarkoitus tarjota perustoiminnot, jotka voidaan jakaa edelleen ja ohittaa useita johdettuja luokkia. On hyödyllistä välttää kaikenlaista koodin päällekkäisyyttä. Ne näyttävät paljon rajapinnoista, mutta niissä on lisätoimintoja.

Mikä on käyttöliittymä?

Rajapinta ei sitä vastoin ole luokka, joka sisältää vain toimintojen allekirjoitukset. Se on malli ilman toteutusta. Käsitteellisesti se on vain menetelmien määritelmä, joka sisältää vain jäsenten ilmoitukset. Se on tyhjä kuori, joka ei sisällä jäsentensä toteuttamista. Se on kuin abstrakti perusluokka, joka sisältää vain abstrakteja jäseniä, kuten menetelmiä, tapahtumia, indeksereitä, ominaisuuksia jne. Sitä ei voida välittömästi välittää ja sen jäseniä voi toteuttaa kuka tahansa luokka. Lisäksi luokka voi toteuttaa useita käyttöliittymiä, mutta luokka voi kuitenkin periä vain yhden luokan.

Abstrakti luokka vs. rajapinta: Abstraktin luokan ja rajapinnan välinen ero C #: ssä

  1. Monta perintöä - Luokka voi käyttää vain yhtä abstraktia luokkaa, joten useita perimisiä ei tueta. Rajapinta puolestaan ​​voi tukea useita perintöjä, mikä tarkoittaa, että luokka voi periä minkä tahansa määrän perintöjä.
  2. Määritelmä  of C-luokan abstrakti luokka ja käyttöliittymä- Abstrakti luokka on erityinen luokkatyyppi, joka voi sisältää määritelmän ilman toteutusta. Toteutuslogiikan tuottavat johdetut luokat. Sillä voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Rajapinta puolestaan ​​on vain malli, joka ei voi tehdä mitään. Teknisesti se on vain tyhjä kuori.
  3. Toteutus - Abstrakti luokka voi sisältää sekä määritelmän että sen toteutuksen. Se on epätäydellinen luokka, jota ei voida välittää. Rajapinnalla voi olla vain toiminnallisuuden allekirjoitus ilman koodia.
  4.  Pääsymuuntajat - Abstraktissa luokassa voi olla useita käyttöoikeuksien muuntajia, kuten alaosa, toiminnot, ominaisuudet jne., Kun taas rajapinnalla ei ole pääsyä muuntajiin ja kaikki menetelmät on määriteltävä implisiittisesti julkisiksi..
  5. homogeenisuus - Abstraktia luokkaa käytetään samantyyppisiin, käyttäytymiseen ja tilaan liittyviin toteutuksiin, kun taas käyttöliittymää käytetään toteutuksiin, jotka jakavat vain menetelmä-allekirjoituksia.
  6. ilmoitus - Abstrakti luokka toimii perusluokana kaikille muille luokille, joten se voi ilmoittaa tai käyttää mitä tahansa muuttujaa, kun taas käyttöliittymä ei saa ilmoittaa mitään muuttujia.
  7. Rakentajan ilmoitus - Vaikka abstraktilla luokalla voi olla rakentaja-ilmoitus, rajapinnalla ei voi olla rakentaja-ilmoitusta.
  8. Ydin vs. oheislaite - Abstraktia luokkaa käytetään luokan ydintunnuksen määrittelemiseen, ja sitä voidaan käyttää samaan tietotyyppiin kuuluvissa kohteissa. Toisaalta rajapintaa käytetään luokan kehäkyvyn määrittämiseen.
  9. Jäykkä vs. täydentävä - Abstrakti luokka on toiminnallisuuden kannalta joustavampi ainakin kehittäjän näkökulmasta, kun taas käyttöliittymä on jäykempi.

Tiivistelmäluokka vs. käyttöliittymä: Taulukon muoto

Abstrakti luokka

Käyttöliittymä

Abstraktissa luokassa voi olla kaikki pääsymuokkaimet toimintojen, ala- ja ominaisuuksien jäsenilmoituksia varten. Rajapinnalla ei saa olla käyttöoikeuksien muokkauksia toimintojen, alamomenttien, ominaisuuksien jne. Jäsenten ilmoittamiseksi. Kaikkien jäsenten oletetaan olevan epäsuorasti julkisia.
Luokka voi käyttää korkeintaan yhtä abstraktia luokkaa. Luokka voi periä minkä tahansa määrän rajapintoja.
Monta perintöä ei tueta abstraktissa luokassa. Rajapinta voi tukea useita perimisiä.
Teknisesti se on luokka, joka voi sisältää tai ei sisällä sekä määritelmää että sen toteutusta. Rajapinnalla voi olla vain toimintojen allekirjoitus, joten se on pohjimmiltaan tyhjä kuori.
Abstrakti luokka voi sisältää jäseniä. konsulit, määritellyt menetelmät ja menetelmäluokat. Rajapinta voi sisältää vain menetelmiä ja konsistoja.
Se määrittelee luokan ydintunnisteen ja sitä käytetään kuvaamaan saman tietotyypin kohteita. Sitä käytetään kuvaamaan luokan perifeerisiä kykyjä.
Abstraktin luokan jäsenet eivät voi olla staattisia, ellei se ole täysjäsen. Rajapinnan jäsenet eivät voi olla staattisia.
Se on ihanteellinen samanlaista toteutusta ja yhteistä käyttäytymistä varten. On parempi käyttää rajapintoja, jos useat toteutukset jakavat vain menetelmä-allekirjoitukset.
Sillä voi olla rakentajan ilmoitus. Sillä ei voi olla rakentaja-ilmoitusta.
Abstraktilla luokalla on ennalta määritellyt kentät ja vakiot. Kenttiä ei voida määritellä rajapinnoissa.
Sillä voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Sillä voi olla vain abstrakteja menetelmiä.

Yhteenveto

Mitä eroa on abstraktin luokan ja käyttöliittymän välillä? Tämä on todennäköisesti yksi yleisimmistä kysymyksistä, joita kaikissa teknisissä haastatteluissa kysytään. Löydät todennäköisesti lukuisia tietoja abstrakteista luokista ja rajapinnoista missä tahansa C # -oppaassa, mutta näiden kahden eron ymmärtäminen on melko vaikea asia. Voit yhdistää kaikki löytämäsi tiedot, mutta et silti pääse tarpeeksi. No, käsitteellisesti molemmat ovat tärkeimmät termit ohjelmoinnissa ja ovat melko samoja, mutta ne eroavat toisistaan ​​paljon toiminnallisuuden suhteen. Vaikka abstrakti luokka on erityinen luokkatyyppi, joka toimii pohjana muille luokille, käyttöliittymä on toisaalta vain tyhjä kuori, jossa on vain jäsenilmoituksia..