Erot Java-käyttöliittymän ja abstraktin luokan välillä

Rajapinta määrittelee, mitä luokan on tehtävä, mutta ei miten. Periaatteessa se on luokan suunnitelma. Rajapinnassa ilmoitetut muuttujat ovat julkisia, staattisia ja lopullisia oletuksena. Luokkaa, joka ilmaistaan ​​avainsanalla “abstrakti”, kutsutaan abstraktiksi luokkaksi A-luokka, joka johdetaan abstraktista luokasta, on määriteltävä kaikki menetelmät, jotka julistetaan abstraktiksi luokkaksi abstraktiksi.

Mikä on käyttöliittymä?

Rajapinta on kuin luokka, mutta siinä ei voi olla menetelmiä ja muuttujia luokana, mutta käyttöliittymässä ilmoitetut menetelmät ovat oletuksena abstrakteja. Rajapintaa käytetään antamaan täysi abstraktio, koska rajapintojen menetelmillä ei ole runkoa. Joten luokan on toteutettava ne ennen kuin yrität päästä niihin. Yleensä rajapinnan toteuttavan luokan on määriteltävä kaikki käyttöliittymässä ilmoitetut menetelmät, ellei niin ole, luokka on julistettava abstraktiksi. Emme voi laajentaa käyttöliittymää useampaan kuin yhteen luokkaan, koska Java ei salli. Rajapinnan ilmoittamiseksi meidän on käytettävä käyttöliittymän avainsanaa ja toteutettava käyttöliittymän käyttämiseksi tarvitsemme välineiden avainsanan.

Mikä on tiivistelmä?

Luokkaa, joka ilmaistaan ​​avainsanalla “abstrakti”, kutsutaan abstraktiluokkaksi. Abstraktilla luokalla voi olla abstraktia (menetelmä ilman vartaloa) ja konkreettisia menetelmiä (menetelmä kehon kanssa), toisin kuin normaalissa luokassa. Abstraktia luokkaa ei voida toteuttaa, ts. Emme voi luoda objektia sille, mutta meillä voi olla viittauksia abstraktiin luokkaan luomalla toinen luokka, joka laajentaa abstraktia luokkaa ja tarjoaa menetelmien toteuttamisen. Voimme käyttää lapsen esinettä (joka on äskettäin luotu) kutsua abstrakteja ja normaaleja menetelmiä. Sillä voi olla rakentajia ja abstraktia luokkaa kutsutaan, kun perinnöllinen luokka esiintyy. Java-versiossa meillä voi olla abstrakti luokka ilman abstrakteja avainsanoja, mutta näitä luokkia ei voida välittää, vain periä ja niillä voi olla myös lopulliset menetelmät.

Head to Head -vertailu Java-käyttöliittymän ja tiivistelmäluokan välillä (infografia)

Alla on 9 parhainta vertailua Java-käyttöliittymän ja tiivistelmäluokan välillä

Java-käyttöliittymän ja tiivistelmäluokan tärkeimmät erot

Sekä Java-käyttöliittymä vs abstraktiluokka ovat suosittuja valintoja markkinoilla; keskustelemme joistakin tärkeimmistä eroista Java-käyttöliittymän ja tiivistelmäluokan välillä:

  • Rajapinnalla voidaan saavuttaa useita perintöjä ja löysä kytkentä, jota emme pysty saavuttamaan abstraktilla luokalla.
  • Liitäntä, jota käytetään täydellisen abstraktin saavuttamiseen, kun taas abstrakti luokka voi saavuttaa osittaisen abstraktion.
  • Abstrakti luokka laajentaa vain yhden normaalin luokan tai abstraktin luokan kerrallaan, kun taas rajapinta voi laajentaa minkä tahansa määrän rajapintoja kerrallaan.
  • Abstrakti luokka laajentaa toisen abstraktin tai normaalin luokan, kun taas rajapinta voi laajentaa vain toisen Java-liittymän.
  • Abstraktissa luokassa meidän on julistettava menetelmät käyttämällä ”abstraktia” avainsanaa, kun taas käyttöliittymässä voidaan ilmoittaa menetelmät joko “abstraktin” avainsanan kanssa tai ilman.
  • Rajapinnassa voi olla vain abstrakteja menetelmiä, kun taas abstraktissa luokassa voi olla sekä abstraktia että normaalia luokkaa.
  • Abstraktissa luokassa voi olla erilaisia ​​muuttujia, kuten staattinen, lopullinen, ei-lopullinen, ei-staattinen, julkinen, yksityinen jne., Kun taas rajapinnassa voi olla vain julkisia, staattisia ja lopullisia muuttujia.
  • Abstrakti luokka ja sen menetelmät voidaan luoda avainsanalla “abstrakti”, kun taas rajapinnan avainsanalla luodaan rajapinta, mutta ei menetelmiä.
  • Abstraktissa luokassa voi olla rakentajia, kun taas rajapinnalla ei ole rakentajaa.
  • Abstraktia luokkaa käytetään määrittelemään alaluokan sopimukset, menetelmien toteutukset, kun taas rajapintaa käytetään määrittämään alaluokkien sopimus.
  • Rajapinta voi laajentaa vain muita Java-liittymiä, kun taas abstrakti luokka voi laajentaa muita luokkia ja toteuttaa myös rajapinnan.
  • Luokan, joka laajentaa abstraktia luokkaa laajentamalla avainsanaa, on toteutettava kaikki abstraktissa luokassa ilmoitetut menetelmät, ellei luokka ole myös abstrakti luokka, kun taas luokka, joka toteuttaa rajapinnan käyttöliittymän avainsanalla, tarjoaa myös toteutuksen kaikille rajapinnassa ilmoitetuille menetelmille.

Vertailutaulukko Java-käyttöliittymä vs abstrakti luokka

Seuraava on vertailutaulukko Java-käyttöliittymän ja tiivistelmäluokan välillä

Java-käyttöliittymän ja tiivistelmäluokan vertailun perusteetAbstrakti luokkaJava-käyttöliittymä
Menetelmän tyyppiAbstraktissa luokassa voi olla sekä abstrakteja (menetelmiä ilman vartaloa) että ei-abstrakteja (menetelmiä ruumiin kanssa)Interfacessä meillä voi olla vain abstrakteja menetelmiä. Java 8 -käyttöliittymässä voi myös olla staattisia ja oletusmenetelmiä
SyntaksiTiivistelmäluokka voidaan julistaa seuraavasti:
julkinen abstrakti luokkakoulu (Julkinen abstrakti tyhjät luokat ();
julkinen abstrakti mitätön vahvuus ();)
Rajapinta voidaan ilmoittaa seuraavasti:
julkisen käyttöliittymän muoto (Void Draw_rect (); Void Draw_square ();)
Lopullinen muuttujaAbstraktissa luokassa voi olla lopullinen ja ei-lopullinen muuttuja.Kun taas rajapinnalla voi olla vain lopullisia muuttujia, koska muuttujat ovat oletusarvoisesti loppuja rajapinnassa.
ToteutusAbstrakti luokka voi tarjota kaikkien abstraktien menetelmien toteutuksen käyttöliittymässä.Vaikka käyttöliittymässä emme voi tarjota abstraktin luokan toteutusta.
Muuttuva tyyppiAbstrakti luokka voi sisältää kaiken tyyppisiä muuttujia, kuten lopullisen, ei-lopullisen, staattisen, ei-staattisen, yksityisen, julkisen jne.Taas rajapinnalla voi olla vain julkisia, staattisia ja lopullisia muuttujia.
Tietojen jäsenille pääsyAbstraktissa luokassa voi olla luokan jäseniä yksityisinä, suojattuina, julkisina jne.Rajapinnassa voi olla vain julkisen luokan jäseniä, koska rajapinnan datajäsenet ovat oletuksena julkisia.
Perintö vs abstraktioAbstraktia luokkaa voidaan laajentaa käyttämällä "laajentaa" -sanaa, ja sen on tarjottava kaikkien ilmoitettujen menetelmien toteutus vanhemmaluokassa tai abstraktissa luokassaRajapinta voidaan toteuttaa käyttämällä ”käyttöliittymä” -sanaa, ja sen on tarjottava toteutusta kaikille käyttöliittymässä ilmoitetuille menetelmille
Useita toteutuksiaAbstrakti luokka voi laajentaa toisen Java-luokan toteuttaa useita rajapintojaRajapinta voi laajentaa vain toisen käyttöliittymän.
Milloin käyttääAbstraktia luokkaa on käytettävä, kun joidenkin luokkien on jaettava muutama rivi koodia, niin voimme laittaa nämä koodit abstraktiin luokkiin ja laajentaa niitä kaikilla siihen liittyvillä luokilla.Rajapintaa voidaan käyttää, kun joudumme saavuttamaan useita perimisiä, täydellinen abstraktio toteuttamalla kaikki rajapinnan ilmoittamat menetelmät luokan, joka rajapinnan toteuttaa.

Johtopäätös - Java-käyttöliittymä vs abstrakti luokka

Lopuksi, se on yleiskatsaus eroa Java-käyttöliittymän ja tiivistelmäluokan välillä. Toivon, että ymmärrät paremmin nämä Java-käyttöliittymän ja tiivistelmäluokan käsitteet. Vaatimuksemme perusteella voimme käyttää sekä Java-käyttöliittymää vs abstraktia luokkaa yhdessä, vain käyttöliittymää ja vain abstraktia luokkaa. Mutta rajapintojen ja abstraktin luokan käyttö yhdessä on paras tapa suunnitella. Kun luokan on jaettava jokin koodi, voimme sijoittaa sen koodin abstraktiin luokkaan ja kun objektin tilaa vaaditaan, määrittelemällä ei-staattiset tai ei-lopulliset kentät, voimme käyttää abstraktia luokkaa. Voimme käyttää käyttöliittymää, kun tarvitsemme täydellistä abstraktiota, useita perintöjä ja löysää kytkemistä.

Suositeltava artikkeli

Tämä on opas Java-käyttöliittymän ja tiivistelmäluokan tärkeimpiin eroihin. Tässä keskustellaan myös Java-käyttöliittymän vs abstraktin luokan avaineroista infografioiden ja vertailutaulukon kanssa. Saatat myös katsoa seuraavia artikkeleita -

  1. Kuinka hyödyllistä C # -haastattelukysymykset ja -vastaukset ovat?
  2. 8 Hyödyllinen vertailu-HTML5 vs. Flash
  3. Java vs. C # - 8 tärkeää eroa
  4. Ruby vs Solmu
  5. HTML5 vs. JavaScript-vertailu
  6. ArrayList vs Java Vector