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: Seamanin ja Deck Cadetin välinen ero

    Seamanin ja Deck Cadetin välinen ero

    Keskeinen ero: Merimies on kannen osaston alin poraus. Se on lähtötason kanta, joka ei vaadi mitään kokemusta. Merimiehen tehtävänä on tehdä kaikkea ja kaikkea, mikä on välttämätöntä kannen osastoalueiden ja laitteiden ylläpitoon ja ylläpitoon. Deck Cadet, toisaalta, on kolmas poraus alhaalta. He ovat koulut
  • ero: Ei ja koskaan välinen ero

    Ei ja koskaan välinen ero

    Keskeinen ero: Ei tarkoittaa ei, hyvin tarkalleen se on negatiivinen vastaus johonkin, mikä osoittaa, että henkilö ei halua tehdä sitä, mitä henkilö osoittaa. Koskaan ”ei osoita jotain, jota ei koskaan tapahdu, kun taas” ei ”osoittaa, että jotain ei tapahdu tällä hetkellä, mutta voi tapahtua tulevaisuudessa. Ei ja koskaan o
  • ero: Android Lollipopin ja Apple iOS 8: n välinen ero

    Android Lollipopin ja Apple iOS 8: n välinen ero

    Keskeinen ero: Lollipop on Googlen uusin Android-versio 5.0, kun taas Apple iOS 8 on Applen käyttöjärjestelmän uusin versio. Jatkuva taistelu Googlen ja Applen välillä ei lopu koskaan sovelluksissa ja käyttöjärjestelmissä. Molemmat yhtiöt kehittävät uusia ja parempia käyttöliittymiä ja tarjoavat käyttäjälle enemmän vaihtoehtoja. Molemmat yhtiöt ov
  • ero: Sääntöjen ja asetuksen välinen ero

    Sääntöjen ja asetuksen välinen ero

    Keskeinen ero: Säännöt ovat ohjeita, joiden tarkoituksena on ylläpitää organisaation sujuvaa toimintaa ja ylläpitää rauhaa ja harmoniaa kansansa keskuudessa. Säännöt ovat myös epävirallisia suuntaviivoja, joissa todetaan, mitä henkilön on tehtävä ja jota ei pidä tehdä. Asetuksia voidaan käyttää määrittelemään kaksi asiaa; Lainsäädännön ja kirjallisen välineen seuranta- ja täytäntöönpanoprosessi, joka sisältää sääntöjä, joilla on niitä koskeva lainsäädäntö. Säännöt ja määräykset ovat tärkeitä termejä, j
  • ero: Nerdin ja Intelligentin välinen ero

    Nerdin ja Intelligentin välinen ero

    Keskeinen ero: Termi, nörtti käytetään viittaamaan henkilöön, joka käyttäytyy hankalasti muiden ihmisten ympärillä, että hän on sosiaalisesti epäonnistunut. Nerdi on yleensä joku, joka on erittäin kiinnostunut teknisistä aiheista, tietokoneista, peleistä, kirjoista, sarjakuvista jne. Älykäs tarkoitt
  • ero: Sony Xperia Z Tabin ja Galaxy Note II: n välinen ero

    Sony Xperia Z Tabin ja Galaxy Note II: n välinen ero

    Tärkein ero: Sony on äskettäin ilmoittanut uudistetusta älypuhelimesta ja tabletista. Uuden lippulaivapuhelin Sony Xperia Z: n lisäksi yhtiö on lisännyt uuden tabletin, Sony Xperia Z -välilehden. Tabletti tukee 10, 1 tuuman TFT-kapasitiivista kosketusnäyttöä ja se luodaan Sony Mobile BRAVIA Engine 2 -tekniikalla. Samsung G
  • ero: HTC Windows 8X: n ja Sony Xperia SP: n välinen ero

    HTC Windows 8X: n ja Sony Xperia SP: n välinen ero

    Tärkein ero: HTC Windows 8X: ssä on 4, 3 tuuman S-LCD2-kapasitiivinen kosketusnäyttö, joka tarjoaa pikselitiheyden 342ppi. Näyttö on suojattu gorilla-lasilla 2, joka tekee siitä melko kestävän ja vähemmän altis naarmuille. Puhelin on melko liukas ja ohut, ja sen paino on vain 130 grammaa. Xperia SP on 4, 6 tuuman TFT-kapasitiivinen kosketusnäyttöpuhelin, joka on koteloitu alumiinirunkoon. Se on alle
  • ero: Sony Xperia E: n ja Karbonn Titanium S5: n välinen ero

    Sony Xperia E: n ja Karbonn Titanium S5: n välinen ero

    Tärkein ero: Sony Xperia E ja E-Dual ovat kaksi Sony Mobile -käyttöjärjestelmää. Puhelimessa on 3, 5 TFT-kapasitiivinen, jonka pikselitiheys on ~ 165 ppi. Siinä on 1 GHz: n Cortex-A5 Qualcomm Snapdragon -prosessori, Adreno 200 GPU ja 512 Mt RAM-muistia. Karbonn Titanium S5 harjoittaa 5, 0 tuuman näyttöä, jonka resoluutio on 540 x 960 pikseliä. Se toimii
  • ero: Raakasokerin ja valkoisen sokerin välinen ero

    Raakasokerin ja valkoisen sokerin välinen ero

    Keskeinen ero: Sokeri käsitellään pitkällä prosessilla. Ensin mehu uutetaan sokeriruokosta ja puhdistetaan sitten kalkilla ja lämpöllä. Sitten se käsitellään edelleen ja se lopulta erottuu sokerikiteiksi ja melassiksi. Sokerikiteitä valkaistaan ​​ja puhdistetaan, jotta saadaan lopputuote, jota ostamme supermarketissa. Tämä on perint

Toimituksen Valinta

Google Analyticsin ja Google Webmaster Toolsin välinen ero

Tärkein ero: Google Analytics on tilastopalvelu, jonka avulla käyttäjät voivat luoda ja seurata verkkosivujen tilastoja, kun taas Googlen Verkkovastaavan työkalut ovat työkaluja, jotka ovat käytettävissä web-ylläpitäjille, joita voidaan käyttää hakukoneiden indeksointiin. Periaatteessa Googlen Verkkovastaavan työkalut auttavat verkkosivustoa ottamaan luettelon Googlen hakukoneeseen, kun taas Google Analytics tarjoaa tietoa verkkosivuston onnistumisen mittaamiseksi. Google Analyt