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

  • ero: Erot LG Optimus G Pro: n ja Sony Xperia Z: n välillä

    Erot LG Optimus G Pro: n ja Sony Xperia Z: n välillä

    Keskeinen ero: LG Optimus G Pro: lla on suuria päivityksiä edeltäjäänsä LG Optimus G. Laitteeseen kuuluu massiivinen 5, 5 tuuman True Full HD IPS-kosketusnäyttö, jossa on multi-touch-ominaisuus ja pikselitiheys 401 ppi. Hupun alla puhelimessa on 1, 7 GHz: n Quad-core Snapdragon 600, joka tekee siitä melko nopean ja nopean. Sony Xp
  • ero: Apple Musicin ja iTunesin välinen ero

    Apple Musicin ja iTunesin välinen ero

    Keskeinen ero: Apple Music on musiikin suoratoistopalvelu, jonka avulla voit kuunnella musiikkia internetissä. iTunes on mediakirjasto, jossa voi käyttää kaikkia niiden mediaa, kuten musiikkia, videoita jne. Apple Music ja iTunes ovat kaksi eri palvelua, jotka Apple Inc. on kehittänyt ja markkinoinut. Mol
  • ero: Xiaomi Mi 4: n ja Mi 4i: n välinen ero

    Xiaomi Mi 4: n ja Mi 4i: n välinen ero

    Keskeinen ero: Yritys on väittänyt, että Mi 4i on keskikokoinen vaihtoehto alkuperäiselle Mi: lle 4. Puhelimet poikkeavat toisistaan ​​ulkonäöltään. Mi 4: ssä on hienostuneempi ulkoasu, jossa teräsrunko ja lasi peittävät edessä ja takana. Mi 4i: ssä on polykarbonaatti, jonka odotetaan olevan sekä kiiltävä että matta. Xiaomi Mi puhelimet
  • ero: Kyselyjen ja kyselyjen välinen ero

    Kyselyjen ja kyselyjen välinen ero

    Keskeinen ero: Kyselyt ja tutkimukset ovat kaksi erilaista menetelmää, joita voidaan käyttää tietojen saamiseen. Tutkijat käyttävät niitä yleensä mielipiteiden arvioimiseksi ja palautteen saamiseksi. Pääasiallinen ero näiden kahden välillä on se, että kysely on pieni, yksinkertainen ja nopea. Tutkimus voi o
  • ero: Motorola Moto 360: n ja Asus ZenWatchin välinen ero

    Motorola Moto 360: n ja Asus ZenWatchin välinen ero

    Keskeinen ero: Motorola Moto 360 on Googlen lippulaiva, ja se on käynnistetty yhteistyössä molempien yritysten kanssa. Asus ZenWatch on Asus, joka yrittää päästä suhteellisen käyttämättömään smartwatch-markkinoihin. Kun tekniikka kasvaa nopeasti, suuntaukset ovat nyt siirtymässä samaan tahtiin tekniikoiden kanssa. Suuntaus on ny
  • ero: Stickballin ja kriketin välinen ero

    Stickballin ja kriketin välinen ero

    Tärkein ero: Stickball on oikeastaan ​​katupeli, joka on hyvin samanlainen kuin baseball ja sisältää myös perustaa. Se on epävirallinen peli, jota ei ole kodifioinut valtio tai kansainvälinen hallintoelin. Stickball pelataan käyttäen luuta kahvaa ja mitä tahansa palloa, joka on suhteellisen tenniskentän kokoinen. Kriketti on s
  • ero: Taiteen ja suunnittelun välinen ero

    Taiteen ja suunnittelun välinen ero

    Keskeinen ero: Taide ja muotoilu ovat kaksi tärkeää visuaalisen taiteen jäsentä. Taide on kyse itseilmaisusta, kun taas suunnittelulla on tarkoitus ilmoittaa aiotusta tarkoituksesta ongelman ratkaisemiseksi. Taidetta voidaan tulkita eri tavoin, kun taas muotoilu ei voi olla tulkitseva, vaan niiden on kommunikoitava tehokkaasti ja selkeästi. Taid
  • ero: Ripulin ja dysenteerian välinen ero

    Ripulin ja dysenteerian välinen ero

    Keskeinen ero: Ripuli ja dysentery ovat kaksi erilaista tilannetta, joilla on samanlaisia ​​oireita. Ripuli, myös yleisesti ripuliksi kirjoitettu, on silloin, kun henkilöllä on vähintään 3 tai useampaa löysä uloste päivässä. Dysentery, toisaalta, on vakava infektio suolistossa, erityisesti paksusuoli, joka johtaa ripuliin. Ripuli ja dys
  • ero: Microsoft Surface RT: n ja Dell Latitude 10: n Windows-tabletin välinen ero

    Microsoft Surface RT: n ja Dell Latitude 10: n Windows-tabletin välinen ero

    Keskeinen ero: Microsoft Surface RT on tabletti, jossa on 10, 6 tuuman TFT HD: n kapasitiivinen kosketusnäyttö, jonka tiheys on noin 148 ppi. Näyttö antaa oikean 16: 9-kuvasuhteen. Käyttöjärjestelmä ei kuitenkaan ole yhteensopiva vanhojen Windows PC-ohjelmien kanssa. Latitude 10 -tabletti on melko liukas ja kevyt, 658 grammaa. Laitte

Toimituksen Valinta

Yleisen oikeuden ja pääoman välinen ero

Keskeinen ero: yhteiset lait ovat lakeja, jotka on tullut voimaan ja jotka on annettu tuomioistuimen päätösten perusteella. Nämä lait on kehitetty vanhempien oikeustapausten yhteydessä annettujen päätösten perusteella. Yleisiä lakeja kutsutaan myös oikeuskäytännöksi tai ennakkotapaukseksi. Omaisuus on