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: 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: Ero erotuksen ja uuttamisen välillä

    Ero erotuksen ja uuttamisen välillä

    Keskeinen ero : Uuttaminen on menetelmä, jota käytetään orgaanisen yhdisteen erottamiseen yhdisteen seoksesta. Tämä tekniikka liuottaa valikoivasti yhden tai useamman yhdisteen sopivaan liuottimeen. Erotusprosessi on menetelmä, jolla kemiallisten aineiden seos tai liuos muunnetaan kahteen tai useampaan erilliseen tuoteseokseen. Ainak
  • ero: Ebolan ja Marburgin välinen ero

    Ebolan ja Marburgin välinen ero

    Keskeinen ero: Sekä Ebola-virus että Marburg-virus ovat tyypiltään hemorragisia kuumeja, jotka aiheuttavat vakavia sairauksia ihmisillä. Niiden oireet ovat lähes identtiset toistensa kanssa, mikä tekee diagnoosit vaikeaksi. Sekä Ebola-virus että Marburg-virus ovat tyypiltään hemorragisia kuumetta, jotka aiheuttavat vakavia sairauksia ihmisillä. Vaikka vir
  • ero: Dual Core: n ja Intel i3: n välinen ero

    Dual Core: n ja Intel i3: n välinen ero

    Keskeinen ero: Kaksisydäminen prosessori on keskusyksikön (CPU) tyyppi, jossa on kaksi täydellistä suoritusmuotoa. Kaksoisydin on tullut Intel Pentium Dual Core -tekniikan synonyymiksi. Sitä voidaan joskus käyttää myös Intelin Core 2 Duo -linjaan. Intel Core i3 on kahden ytimen prosessori. Se on itse asiassa Intelin Core 2 Duo -linjan seuraaja. Kaksisy
  • ero: Sheeshamin ja Mango Woodin välinen ero

    Sheeshamin ja Mango Woodin välinen ero

    Keskeinen ero: Sheesham on pohjimmiltaan eräänlainen ruusupuu. Se on peräisin Dalbergia sissoo -puulajeista, jotka tunnetaan yleisesti nimellä Intian ruusupuu. Sitä käytetään yleisesti huonekalujen, erityisesti kaappien, valmistukseen. Tämä johtuu pääasiassa siitä, että puu on erittäin kestävä ja pitkäikäinen. Mangopuu on toisa
  • ero: Ero rotan ja hiiren välillä

    Ero rotan ja hiiren välillä

    Keskeinen ero : Rotta on keskisuuret ja suuret jyrsijät, joissa on terävä kuono, pitkä hoikka ja karvaton hännän ja mutkikkaiden etureunojen. Hiiri on pieni nisäkäs, noin varpunen koko. Yleensä siinä on terävä piikki, pienet pyöristetyt korvat ja pitkä alasti tai lähes karvaton häntä. Rotta ja hiiri
  • ero: Hengitysteiden vaihtosuhteen (RER) ja hengityssuhteen (RQ) välinen ero

    Hengitysteiden vaihtosuhteen (RER) ja hengityssuhteen (RQ) välinen ero

    Keskeinen ero: RER, lyhyt hengitystietojen vaihtosuhteesta on suhde, jonka tarkoituksena on mitata tuotetun hiilidioksidin (CO2) määrä verrattuna käytetyn hapen määrään (O2). Hengityselimiä (RQ), joka tunnetaan myös hengityskertoimena, on luku, joka on varsin hyödyllinen laskettaessa perusaineenvaihduntaa (BMR). Hengityse
  • ero: Nexus 7: n ja Nexus 10: n välinen ero

    Nexus 7: n ja Nexus 10: n välinen ero

    Keskeinen ero: Nexus 7 on tablet-tietokone, jossa on Android 4.1 (nimeltään Jelly Bean) -käyttöjärjestelmä. Se kehitettiin yhteistyössä Asuksen kanssa. Nexus 10 on tablet-tietokone, jossa on Android 4.2 (myös Jelly Bean) -käyttöjärjestelmä. Se kehitettiin yhteistyössä Samsungin kanssa. Teknologian j
  • ero: Ahdistuksen ja paniikkikohtausten välinen ero

    Ahdistuksen ja paniikkikohtausten välinen ero

    Keskeinen ero: Ahdistus on vastaus stressitekijälle. Ahdistus on tunne pelosta, levottomuudesta ja huolesta. Se voi olla juurtunut joka tapauksessa, joka saa tuntuu turhautuneena, vihaisena tai hermostuneena. Paniikkikohtaus on tila, jossa henkilö kokee äkillisen pelon, hermostuneisuuden ja / tai ahdistuksen. S

Toimituksen Valinta

Erot LG Optimus G: n ja LG Optimus F7: n välillä

Keskeinen ero: LG Optimus G: ssä on 4, 7 tuuman näyttö ja se toimii Android 4.0: ssa (Ice Cream Sandwich). Laitteistolla on Qualcomm Snapdragon S4 Pro APQ8064, 1, 5 GHz: n quad-core Qualcomm Krait ja 2 Gt: n RAM-muistia. LG Optimus F7: ssä on 4, 7 tuuman näyttö ja se toimii Android 4.1.2 (Jelly Bean) -näytöllä. Laittei