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.
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.
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 | 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ä. |
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..