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

Abstraktia luokkaa ja käyttöliittymää käytetään ensisijaisesti abstraktioon, mutta ne eroavat toisistaan ​​hyvin. Molemmat ovat Java-ydinosa, mutta niillä on omat sovelluskäytöt. Vaikka molemmat termit saattavat olla synonyymejä toistensa kanssa, niitä ei voida käyttää keskenään.

Näiden kahden välillä on merkittäviä eroja. Vaikka käyttöliittymämenetelmä on oletuksena abstrakti, abstrakti voi sisältää sekä abstrakteja että ei-abstrakteja menetelmiä. No, Java 8: n jälkeen, myös rajapinnoissa on menetelmien toteutuksia, ja niillä voi olla Javassa sekä staattisia että oletusmenetelmiä. Tutkitaan yksityiskohtaisesti näiden kahden eroa.

Mikä on Java-abstrakti luokka??

Java-abstrakti luokka on luokka, joka julistetaan abstraktiksi - se voi sisältää abstrakteja menetelmiä. Se on melko samanlainen kuin Java-käyttöliittymä paitsi, että se voi sisältää oletusmenetelmän toteutuksen. Kuten olio-ohjelmoinnissa, myös Java-abstraktio saavutetaan abstraktien luokkien ja rajapintojen avulla. Java-ohjelmissa abstraktio tarkoittaa merkityksettömien yksityiskohtien piilottamista käyttäjältä, jotta voidaan keskittyä vain olennaisiin yksityiskohtiin tehokkuuden lisäämiseksi ja siten monimutkaisuuden vähentämiseksi. Avainsanaa ”abstrakti” käytetään abstraktin luokan luomiseen juuri ennen luokan avainsanaa luokitteluilmoituksessa.

Abstrakti luokka voi sisältää tai ei sisällä abstraktiomenetelmiä (menetelmät ilman vartaloa), mutta jos luokalla on ainakin yksi abstraktiomenetelmä, se on julistettava abstraktiksi. Ei-abstrakteja menetelmiä voidaan kuitenkin käyttää myös vain abstraktissa luokassa, mutta vain oletuskäyttäytymisen toteuttamiseen. Abstraktin luokan menetelmillä voi olla pääsymuuntajat, kuten yksityiset, julkiset, staattiset ja suojatut, näkyvyystasosta riippuen. Abstraktia luokkaa ei voida pilkkailla eikä se tarjoa 100-prosenttista abstraktiota, koska sillä voi olla konkreettinen menetelmä.

Mikä on käyttöliittymä?

Vaikka käyttöliittymä näyttää luokalta, se ei ole. Koska Java ei tue useita perintöjä, rajapinta on toisinaan ihanteellinen perustaa luokkahierarkialle. Rajapinta on enemmän luokan suunnitelma, jota käytetään myös Java-abstraktioiden saavuttamiseen. Se sisältää abstrakteja menetelmiä ja staattisia vakioita. Yksinkertaisesti sanottuna käyttöliittymä on abstraktien menetelmien kokoelma, jota käytetään määrittelemään käyttäytyminen, joka luokan on toteutettava. Toisin kuin abstraktissa luokassa, käyttöliittymä tarjoaa täydellisen abstraktion Javassa. Siinä voi olla sekä menetelmiä että muuttujia aivan kuten luokassa, mutta käyttöliittymässä ilmoitetut menetelmät ovat oletuksena abstraktit.

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

  1. Abstraktin luokan ja käyttöliittymän "useita perimisiä" Java - Huolimatta siitä, että sekä abstraktia luokkaa että käyttöliittymää käytetään ensisijaisesti abstraktioihin, ne ovat melko erilaisia ​​toisistaan. Vaikka abstrakti luokka on luokka, rajapinta on rajapinta. Se tarkoittaa, että vaikka käyttöliittymä voi vain laajentaa toista Java-liittymää, abstrakti luokka voi toteuttaa useita perintöjä Javassa. No, Java ei tue useita perintöjä, mutta Java voi toteuttaa useita perintöjä.
  2. "Menetelmätyyppi" abstraktin luokan ja käyttöliittymän Java - Toinen merkittävä ero näiden kahden välillä on, että vaikka rajapinnalla voi olla vain abstrakteja menetelmiä, abstraktissa luokassa voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Java 8: n jälkeen käyttöliittymässä voi kuitenkin olla myös oletus- ja staattisia menetelmiä.
  3. Java-käyttöjärjestelmän abstraktin luokan ja käyttöliittymän ”käyttömuuntajat” - Abstraktilla luokalla voi olla julkisia, yksityisiä ja suojattuja käyttöoikeuksien muuntajia, mutta rajapinnan menetelmät ovat implisiittisesti julkisia ja abstrakteja. Et voi käyttää mitään muuta pääsymuokkainta käyttöliittymämenetelmien kanssa '.
  4. Abstraktin luokan ja käyttöliittymän "toteutus" Java-sovelluksessa - Abstrakti luokka voi tarjota käyttöliittymän toteutuksen. Rajapinta ei sitä vastoin voi tarjota abstraktin luokan toteutusta.
  5. Java-abstraktin luokan ja käyttöliittymän "avainsana"- Vaikka ”abstraktia” avainsanaa käytetään ilmoittamaan abstrakti luokkamenetelmä abstraktina, rajapinnat ovat kuitenkin täysin eri juttu; heillä voi olla vain julkisia, staattisia loppuaineita ja menetelmäilmoituksia.
  6. Abstraktin luokan ja käyttöliittymän "käyttö" Java-sovelluksessa - Vaikka käyttöliittymä on ihanteellinen tyyppien ilmoittamiseen, abstrakti luokka soveltuu parhaiten koodin uudelleenkäytettävyyteen ja evoluutioperspektiiviin. Rajapinta näyttää luokalta, mutta se ei ole luokka.
  7. Abstraktin luokan ja käyttöliittymän "luotettavuus" Java-järjestelmässä- Toinen suuri ero abstraktin luokan ja käyttöliittymän välillä on, että edellinen on vähän nopeampi kuin jälkimmäinen, koska haku on yleensä mukana käyttöliittymässä ennen kuin jotain ohitettua menetelmää kutsutaan Java.
  8. "Lopullinen muuttuja" abstraktin luokan ja käyttöliittymän Java - Rajapinnassa ilmoitetut muuttujat ovat oletuksena lopullisia, kun taas abstrakti luokka voi sisältää tai olla sisältämättä ei-lopullisia muuttujia.

Tiivistelmäluokka vs. rajapinta Java: vertailutaulukko

Abstrakti luokka Käyttöliittymä
Abstrakti avainsana käytetään abstraktin luokan luomiseen ja sitä voidaan käyttää menetelmillä. Rajapinnan avainsanaa käytetään rajapinnan luomiseen, mutta sitä ei voida käyttää menetelmien kanssa.
Luokka voi laajentaa vain yhden abstraktin luokan. Luokka voi toteuttaa useamman kuin yhden käyttöliittymän.
Abstraktilla luokalla voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Käyttöliittymässä voi olla vain abstrakteja menetelmiä.
Muuttujat eivät ole oletuksena lopullisia. Se voi sisältää ei-lopullisia muuttujia. Muuttujat ovat oletusarvoisesti loppuja käyttöliittymässä.
Abstrakti luokka voi tarjota käyttöliittymän toteutuksen. Rajapinta ei voi tarjota abstraktin luokan toteutusta.
Sillä voi olla menetelmiä toteutuksineen. Se tarjoaa absoluuttisen abstraktion, eikä sillä voi olla menetelmien toteutusta.
Sillä voi olla julkisia, yksityisiä, staattisia ja suojattuja käyttöoikeuksien muuntajia. Menetelmät ovat implisiittisesti julkisia ja abstrakteja Java-käyttöliittymässä.
Se ei tue useita perintöjä. Se tukee useita perintöjä.
Se on ihanteellinen koodin uudelleenkäyttöön ja evoluutioperspektiiviin. Se on ihanteellinen tyyppiilmoitukseen.

Yhteenveto pisteistä Java-abstraktista luokasta ja käyttöliittymästä

Abstraktiossa käytetään sekä abstraktia luokkaa että käyttöliittymää; heillä on kuitenkin kohtuullinen osuus eroista. Tärkein ero näiden kahden välillä perustuu abstraktiomenetelmiin. Vaikka ensimmäisellä voi olla abstraktit menetelmät tai ei, jälkimmäisellä on epäsuorasti abstrakti menetelmä. Abstraktilla luokalla voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Rajapinnalla puolestaan ​​voi olla vain abstrakteja menetelmiä, joten niillä ei voi olla toteutusta, mikä tarkoittaa yksinkertaisesti, että rajapinnalla ei voi olla ei-abstrakteja menetelmiä. Abstraktia luokkaa ei voida toteuttaa, mikä kieltää objektin luomisen. Toisaalta rajapinta voi näyttää luokalta, mutta se ei ole.