Ero Interface- ja Abstract-luokan välillä Javaissa

Keskeinen ero: Liitäntä tai protokolla on yleinen tapa, jonka avulla etuyhteydettömät objektit voivat kommunikoida keskenään. Se edustaa sovittua käyttäytymistä, joka helpottaa näiden kahden kohteen välistä vuorovaikutusta. Abstrakti luokka on sellaisten objektien luokka, joita ei voi tuoda esille tai asettaa objektin esiintymää. Tähän luokkaan ei välttämättä ole toteutusta tai sen toteutus voi olla puutteellista.

Java, C ++, C # ovat kaikki monimutkaisia ​​ohjelmointikieliä, jotka edellyttävät yksityiskohtaista tutkimusta ja ymmärrystä voidakseen työskennellä. Näissä kielissä käytetään monia eri menetelmiä, jotka päättävät, miten kieli toimii. Interface ja Abstract Class ovat kaksi hämmentävää konseptia, jotka ovat osa OOP-ohjelmaa (objektikohtainen ohjelmointi). Näitä kahta voidaan käyttää yksittäin tai yhdessä toistensa kanssa. Nämä kaksi ovat täysin erilaisia ​​toisistaan ​​ja niitä käytetään eri tapauksissa.

Java on ohjelmointikieli, jota C-kieli on vaikuttanut. Se syntyy paljon syntaksista C- ja C ++: sta, mutta sillä on vähemmän matalan tason tiloja kuin kumpikin. Java on yleiskäyttöinen ohjelmointikieli, joka on suunniteltu siten, että sillä on vähemmän täytäntöönpano-riippuvuuksia edellisiin kieliin verrattuna. Se on samanaikainen, luokkakohtainen ja objektorientoitu kieli.

Java on kehittänyt James Gosling Sun Microsystemsissä ja julkaistiin vuonna 1995. Se julkaistiin alun perin Sun Microsystemsin Java-alustan keskeisenä osana. Sun on sittemmin lisensoinut suurimman osan Java-teknologioistaan ​​GNU General Public License -sopimuksen nojalla. Tämä tarkoittaa, että kaikki GNU General Public License -lisenssin alainen lisenssi on avoimen lähdekoodin ja yleisesti saatavilla ilmaiseksi. Sun Microsystems sulautui lopulta Oracle Corporationiin. Vuodesta 2012 Java on tullut yksi suosituimmista ohjelmointikielistä käytettäväksi. Tämä pätee erityisesti asiakas-palvelin-web-sovelluksiin. Monissa muissa järjestelmissä on kehitetty vaihtoehtoisia Sun-teknologioiden toteutuksia, kuten GNU Compiler for Java ja GNU Classpath.

Liitäntä tai protokolla on yleinen tapa, jonka avulla etuyhteydettömät objektit voivat kommunikoida keskenään. Se edustaa sovittua käyttäytymistä, joka helpottaa näiden kahden kohteen välistä vuorovaikutusta. Käyttöliittymällä on avain erilaisiin toteutettuihin toimiin ja se toimii kahden eri objektin välisenä linkkinä. Jos rajapinta altistuu luokkiin objekteista, luokan olisi seurattava käyttöliittymän toteuttamaa käyttäytymistä. Yleensä rajapinnat sisältävät vain jatkuvia ilmoituksia ja menetelmien allekirjoituksia. Mikä tahansa käyttöliittymä, joka toteuttaa tietyn käyttöliittymän, on sovellettava kaikkia rajapinnassa mainittuja menetelmiä tai julistettava abstraktiksi luokaksi. Java: ssa mikä tahansa kohde voidaan määritellä rajapinnaksi, jos kyseinen objekti on nolla tai siinä on luokka, jossa se toteuttaa kyseisen rajapinnan. Java-sovelluksessa voidaan toteuttaa useita käyttöliittymiä käyttämällä useita rajapintoja yhdelle luokalle.

Abstrakti luokka on sellaisten objektien luokka, joita ei voi tuoda esille tai asettaa objektin esiintymää. Tähän luokkaan ei välttämättä ole toteutusta tai sen toteutus voi olla puutteellista. Siinä voi olla myös abstrakteja menetelmiä tai ominaisuuksia, jotka ovat kaikkien alaryhmien yhteisiä. Joissakin ohjelmointikielissä abstrakteja tyyppejä, joilla ei ole toteutusta, kutsutaan rajapintoiksi. Java: ssa voidaan luoda abstrakti tyyppi käyttämällä avainsanaa "abstrakti" luokan määritelmässä. Abstraktin luokan luominen kaikkien menetelmien, joita ei ole toteutettu abstraktissa luokassa, jättämiseksi ja sen jättäminen alaluokkaan sen määrittämiseksi, miten nämä luokat toteutetaan. Jos luokassa on yksi abstrakti menetelmä, luokka on julistettava abstraktiksi luokaksi, vaikka ei tarvitse olla vähintään yhtä ainoaa menetelmää luokan abstraktin julistamiseksi.

Malliktalksjava.in luetteloi tärkeimmät erot käyttöliittymän ja abstraktin välillä:

  • Tiivistysluokassa on rakentaja, mutta käyttöliittymä ei ole.
  • Tiivistysluokilla voi olla toteutuksia joillekin sen jäsenille (Methods), mutta rajapinnalla ei voi olla toteutusta kenellekään sen jäsenille.
  • Tiivistysluokissa tulisi olla muita alaluokkia, jotka ovat hyödyttömiä.
  • Liitännöissä on oltava muiden luokkien toteutuksia, jotka ovat hyödyttömiä
  • Vain rajapinta voi laajentaa toista rajapintaa, mutta mikä tahansa luokka voi laajentaa abstraktin luokan.
  • Kaikki muuttujat rajapinnoissa ovat oletusarvoisesti lopullisia
  • Liitännät tarjoavat monen perinnön. Luokka voi laajentaa vain yhden luokan.
  • Liitännät rajoittuvat julkisiin menetelmiin ja vakioihin ilman toteutusta. Tiivistysluokilla voi olla osittainen toteutus, suojatut osat, staattiset menetelmät jne.
  • Luokka voi toteuttaa useita rajapintoja. Mutta abstraktin luokan tapauksessa luokka voi ulottaa vain yhden abstraktin luokan.
  • Liitännät ovat hitaita, koska se edellyttää ylimääräistä epäsuoraa vastaavan menetelmän löytämistä todellisessa luokassa. Abstraktit luokat ovat nopeita.
  • Esteettömyysluokka (julkinen / yksityinen / sisäinen) on sallittu abstraktille luokalle. Liitäntä ei salli esteettömyyden muokkausta
  • Abstrakti luokka voi sisältää täydellisiä tai puutteellisia menetelmiä. Liitännät voivat sisältää vain menetelmän allekirjoituksen, mutta ei kehoa. Täten abstrakti luokka voi toteuttaa menetelmiä, mutta rajapinta ei voi toteuttaa menetelmiä.
  • Abstrakti luokka voi sisältää kenttiä, konstruktoreita tai destruktoreita ja koneen ominaisuuksia. Liitäntä ei voi sisältää kenttiä, rakentajia tai tuhoajia, ja sillä on vain omaisuuden allekirjoitus, mutta sitä ei ole toteutettu.
  • Erilaiset käyttömodifioijat, kuten abstrakti, suojattu, sisäinen, julkinen, virtuaalinen jne. Ovat hyödyllisiä abstrakteissa luokissa, mutta eivät rajapinnoissa.
  • Tiivistelmäalue on johdettu luokka.
  • Liitäntäalue on jopa minkä tahansa tason perintäketjussa.

Taulukon tiedot ovat codeproject.com: n ja mindprod.comin kohteliaisuus

liitäntä

Tiivistelmä luokka

Useita perintöjä

Luokka voi periä useita rajapintoja.

Luokka voi periä vain yhden abstraktin luokan.

Oletusasetus

Liitäntä ei voi antaa koodia, vaan vain allekirjoitusta.

Abstrakti luokka voi antaa täydellisen, oletuskoodin ja / tai vain ne tiedot, jotka on ohitettava.

Access Modifiers

Käyttöliittymässä ei voi olla käyttöoikeuden muokkaajia osiin, toimintoihin, ominaisuuksiin jne. Kaikki oletetaan julkiseksi.

Abstrakti luokka voi sisältää liittymän, toimintojen, ominaisuuksien käyttömodifikaattoreita.

Core vs. Peripheral

Liitäntöjä käytetään luokan perifeeristen kykyjen määrittämiseen. Toisin sanoen sekä ihminen että ajoneuvo voivat periä IMovable-rajapinnasta.

Abstrakti luokka määrittelee luokan ydinidentiteetin ja sitä käytetään saman tyyppisiin kohteisiin.

homogeenisuus

Jos eri toteutukset jakavat vain menetelmien allekirjoitukset, on parempi käyttää Interfaces-ohjelmaa.

Jos eri toteutukset ovat samanlaisia ​​ja käyttävät yhteistä käyttäytymistä tai tilaa, abstrakti luokka on parempi käyttää.

Nopeus

Vaatii enemmän aikaa todellisen menetelmän löytämiseksi vastaaviin luokkiin.

Nopeasti

Toimintojen lisääminen

Jos lisäämme uuden menetelmän käyttöliittymään, meidän on jäljitettävä kaikki käyttöliittymän toteutukset ja määritettävä uuden menetelmän toteutus.

Jos lisäämme uuden menetelmän abstraktille luokalle, meillä on mahdollisuus tarjota oletusarvoinen toteutus ja siksi kaikki nykyinen koodi saattaa toimia oikein.

Kentät ja konstantit

Liitäntöihin ei voi määrittää kenttiä.

Abstraktissa luokassa voi olla määriteltyjä kenttiä ja vakioita.

Terseness

Käyttöliittymän pysyvät ilmoitukset ovat kaikki oletettuja julkisia lopullisia.

Jaettu koodi voidaan lisätä abstraktiin luokkaan.

vakiot

Vain staattiset lopulliset vakiot voivat käyttää niitä ilman pätevyyttä luokissa, jotka toteuttavat käyttöliittymän.

Sekä esimerkki- että staattiset vakiot ovat mahdollisia. Sekä staattinen että esimerkki intialisointikoodi ovat mahdollisia myös vakioiden laskemiseksi.

Kolmannen osapuolen mukavuus

Liitännän toteutus voidaan lisätä mihin tahansa olemassa olevaan kolmannen osapuolen luokkaan.

Kolmannen osapuolen luokka on kirjoitettava uudelleen abstraktista luokasta.

on -suhteellinen tai voi tehdä

Liitäntöjä käytetään usein kuvaamaan luokan perifeerisiä kykyjä, ei sen keskeistä identiteettiä, esim. Automobile-luokka saattaa toteuttaa kierrätettävän käyttöliittymän, jota voitaisiin soveltaa moniin muuten täysin etuyhteydettömiin kohteisiin.

Abstrakti luokka määrittelee sen jälkeläisten ydinidentiteetin. Toteutetut rajapinnat luetellaan yleiset asiat, joita luokka voi tehdä, ei luokkaa.

Java-kontekstissa käyttäjien tulisi tavallisesti toteuttaa Runnable-käyttöliittymä pikemminkin kuin laajentaa Threadia, koska he eivät ole kiinnostuneita tarjoamaan uusia Thread-toimintoja, he haluavat yleensä vain jonkin koodin, joka pystyy toimimaan itsenäisesti. He haluavat luoda jotain, jota voidaan ajaa kierteellä, ei uudenlaista säiettä. Samankaltainen is-a vs. has-a keskustelu tulee esiin, kun päätät periä tai delegoida.

Kytkeä

Käyttäjä voi kirjoittaa uuden korvaavan moduulin rajapinnalle, joka ei sisällä yhtä olemassa olevaa koodia yhdessä olemassa olevien toteutusten kanssa. Kun käyttäjä toteuttaa käyttöliittymän, ne alkavat tyhjästä ilman oletusohjelmaa. Käyttäjän on hankittava työkaluja muista luokista; mikään muu ei koske muuta kuin muutamaa vakiota. Tämä antaa käyttäjälle vapauden toteuttaa radikaalisti erilainen sisäinen muotoilu.

Käyttäjän on käytettävä abstraktia luokkaa, koska se on koodin pohjalle, jossa on kaikki siihen liittyvät matkatavarat, hyvät tai huonot. Abstraktin luokan kirjoittaja on asettanut käyttäjälle rakenteen.

ylläpito

Jos asiakaskoodi puhuu vain käyttöliittymän suhteen, voit helposti muuttaa sen taustalla olevaa konkreettista toteutusta tehdasmenetelmällä.

Jos asiakaskoodi puhuu vain abstraktin luokan osalta, voit helposti muuttaa sen taustalla olevaa konkreettista toteutusta tehdasmenetelmällä.

Suositeltava

Aiheeseen Liittyviä Artikkeleita

  • suosittuja vertailuja: Sairaalan ja vieraanvaraisuuden välinen ero

    Sairaalan ja vieraanvaraisuuden välinen ero

    Keskeinen ero: Sairaala ja vieraanvaraisuus ovat täysin erilaisia. Sairaalaa kutsutaan yleensä lääkintäkeskukseksi. Se on terveydenhuollon organisaatio, jota hallinnoivat suurelta osin ammattilaiset, kirurgit ja sairaanhoitajat. Toisaalta vieraanvaraisuus on paikka, jossa voidaan nähdä yhteys isännän ja palvelimen välillä. Sairaala
  • suosittuja vertailuja: Kasvomaskin ja kasvopakkauksen välinen ero

    Kasvomaskin ja kasvopakkauksen välinen ero

    Keskeinen ero: Kasvomaskia ja kasvopakkauksia käytetään pohjimmiltaan kasvoihin; ne molemmat toimivat samalla tavalla, mutta luonnossa ne eroavat toisistaan. Kasvonaamarit ovat ei-asetettavia naamioita. Niitä käytetään ihon kuivuuden vähentämiseen. Kasvopakkaukset ovat pohjimmiltaan asettamassa naamioita. Ne ovat
  • suosittuja vertailuja: Ero erityisesti ja erikoisesti

    Ero erityisesti ja erikoisesti

    Keskeinen ero: Useimmiten mainoksia "erityisesti" ja "erityisesti" käytetään monissa yhteyksissä. Termiä "erityisesti" käytetään korostamaan ja spesifioimaan mitään, kun taas "erityisesti" käytetään korostamaan minkä tahansa aineen tai asian määrittelyä. Termiä "er
  • suosittuja vertailuja: Ero Dream ja Fantasy välillä

    Ero Dream ja Fantasy välillä

    Tärkein ero : Unet voidaan määritellä sarjana peräkkäisiä visioita, kuvia ja tunteita, joita henkilö kokee unen aikana. Fantasia kuvittelee epätodennäköisiä asioita, joilla ei ole perustaa todellisuudessa. Unet ovat hyvän yöunen sielu. Jos henkilö haaveilee, niin useammin kuin koskaan, hänellä on tällä hetkellä erittäin hyvä unta. Unet elvyttävät aivo
  • suosittuja vertailuja: MLA: n ja MP: n välinen ero

    MLA: n ja MP: n välinen ero

    Keskeinen ero: MLA on lakiasäätävän kokouksen jäsen, kun taas kansanedustaja on parlamentin jäsen. Jäsenenä heidän pääasiallisena tehtävänä on osallistua tähän lainsäätäjään ja auttaa lainsäätäjää hoitamaan tehtävänsä. Lainsäädäntökokous ja parlamentti ovat kuitenkin samat. Ne ovat nimiä, jotka annetaan l
  • suosittuja vertailuja: Blogin ja verkkosivuston välinen ero

    Blogin ja verkkosivuston välinen ero

    Tärkein ero: Web-sivusto on mikä tahansa sivu verkossa, joka järjestää jonkinlaista tietoa. Blogi on eräänlainen verkkosivusto. Blogi ja verkkosivusto ovat kaksi eri tapaa, jolla voidaan lähettää tietoja World Wide Webissä. Verkkosivusto on pohjimmiltaan mikä tahansa sivu verkossa, joka järjestää jonkinlaista tietoa. Blogi on erää
  • suosittuja vertailuja: Accentin ja nousun välinen ero

    Accentin ja nousun välinen ero

    Tärkein ero: Korostus on merkki, jota käytetään osoittamaan painetta tavulla tai lausumaan painotuksella. Termi "nousu" tarkoittaa nousun nousua tai nousua. Näitä kahta termiä aksentti ja nousu ei voida käyttää keskenään. Molemmat ovat kaksi eri sanaa, joilla on huomattavasti erilaiset merkitykset ja joita on käytettävä oikeassa yhteydessä. 'Korostuks
  • suosittuja vertailuja: .Net: n ja .com: n välinen ero

    .Net: n ja .com: n välinen ero

    Keskeinen ero: .net on verkoston johdannainen, joka oli alun perin tarkoitettu verkkoteknologiaan osallistuville organisaatioille. Com, joka on peräisin kaupallisesta, oli alun perin tarkoitettu kaupallisten organisaatioiden rekisteröimille aloille. .net ja .com ovat yleisiä ylätason verkkotunnuksia (gTLD), joita käytetään Internetin verkkotunnusjärjestelmässä. Molemmat
  • suosittuja vertailuja: Myyttien ja kansanjulkaisujen välinen ero

    Myyttien ja kansanjulkaisujen välinen ero

    Tärkeimmät erot: Myytit ovat tarinoita, joita käytetään selittämään käytäntöä, uskomusta tai luonnollista ilmiötä käyttäen koostuvia merkkejä. Kansanjulkaisut ovat varoituksia, jotka on siirretty suullisesti sukupolvelta toiselle. Myytit ja kansanmuseot ovat tarinoita, joita olemme usein kuulleet lapsina, mutta meille nämä olivat nukkumaan tulleita tarinoita ja emme tienneet, olivatko ne samanlaiset tai erilaiset. Mutta kun kasvoim

Toimituksen Valinta

Neuronin ja hermon välinen ero

Keskeinen ero: Neuronit ovat erikoistuneita soluja, jotka kykenevät lähettämään signaaleja kehon eri osien välillä. Nerve on nippu, joka koostuu neuroneista. Siksi neuronit ja hermot ovat läheisessä yhteydessä toisiinsa. Neuronit muodostavat hermoston perustan. Saksalainen tiedemies Heinrich Wilhelm Gottfried von Waldeyer-Hartz loi sanan "neuroni" vuonna 1891. Neuronit