Abstrakti luokka ja liitäntä Java

Anonim

Abstrakti luokka ja käyttöliittymä käytetään lähinnä abstraktioon, mutta ne ovat hyvin erilaisia ​​toisistaan. Molemmat ovat Java-ohjelman keskeisiä osia, mutta niillä on oma sovellustekniikka. Vaikka molemmat termit saattavat olla synonyymeja toisiinsa, niitä ei voi käyttää vaihtokelpoisina.

Näiden kahden välillä on merkittäviä eroja. Vaikka käyttöliittymätapa on abstrakti oletuksena, abstrakti voi sisältää sekä abstrakteja että ei-abstrakteja menetelmiä. No, koska Java 8, rajapinnoilla on myös metodeja toteutuksia ja niillä voi olla sekä staattisia että oletusmenetelmiä Java. Tarkastellaan eroa näiden kahden välillä yksityiskohtaisesti.

Mikä on abstrakti luokka Java?

Abstraktin luokan Java on luokitus, joka on julistettu abstrakti - se voi sisältää tai ei saa sisältää abstrakteja menetelmiä. Se on melko samanlainen kuin Java-käyttöliittymä, paitsi että se voi sisältää oletusmenetelmien toteutuksen. Samoin kuin esiohjelmoiduissa ohjelmoinnissa, Java-abstraktio saavutetaan abstraktien luokkien ja rajapintojen avulla. Javaissa abstraktio tarkoittaa piilottelemasta merkityksettömiä yksityiskohtia käyttäjältä keskittymään vain oleellisiin yksityiskohtiin tehokkuuden lisäämiseksi, mikä vähentää monimutkaisuutta. Avainsanaa "abstrakti" luodaan abstrakti luokka juuri ennen luokan avainsanaa luokan ilmoituksessa.

Abstraktilla luokalla voi olla tai ei voi olla abstraktiomenetelmiä (menetelmiä ilman kehoa), mutta jos luokassa on vähintään yksi abstraktio, se on ilmoitettava abstrakti. Ei-abstrakteja menetelmiä voidaan kuitenkin käyttää vain abstraktissa luokassa, mutta vain oletuskäyttäytymisen toteuttamiseen. Abstraktin luokan menetelmät voivat olla esimerkiksi yksityisiä, julkisia, staattisia ja suojattuja modifioijia, riippuen näkyvyyden tasosta. Abstraktia luokkaa ei voida instantiated ja se ei tarjoa 100 prosenttia abstrakti, koska se voi olla konkreettinen menetelmä.

Mikä on käyttöliittymä?

Rajapinta näyttää kuitenkin luokalta, mutta se ei ole. Koska Java ei tue useita perintöjä, käyttöliittymä on joskus sopiva luokkohierarkian tukemiseen. Rajapinta on enemmän mallin suunnitelma, jota käytetään myös abstraktioon Java-sovelluksessa. Se sisältää abstraktit menetelmät ja staattiset vakiot. Yksinkertaisesti sanottuna käyttöliittymä on kokoelma abstrakteja menetelmiä, joita käytetään määrittämään käyttäytyminen, jota luokan on toteutettava. Toisin kuin abstrakti luokka, käyttöliittymä tarjoaa täyden abstrahoinnin Java. Sillä voi olla sekä menetelmiä että muuttujia kuin luokka, mutta käyttöliittymässä ilmoitetut menetelmät ovat oletuksittain abstrakteja.

Ero absoluuttisen luokan ja käyttöliittymän välillä Javaissa

  1. Abstraktin luokan ja liitännän "moninkertainen perintö" Java: ssa - Huolimatta siitä, että abstrakti luokka ja käyttöliittymä käytetään lähinnä abstraktioon, ne ovat melko erilaisia ​​toisistaan. Vaikka abstrakti luokka on luokka, käyttöliittymä on käyttöliittymä. Se tarkoittaa, että käyttöliittymä voi vain laajentaa toisen Java-käyttöliittymän, abstrakti luokka voi toteuttaa useita perintöjä Java-ohjelmassa. No, Java ei tue useita perintöjä, mutta Java voi periä useita perintöjä.
  2. "Metodityyppi" Abstraktin luokan ja liitännän Java - Toinen tärkeä ero näiden kahden välillä on, että vaikka rajapinnassa voi olla vain abstrakteja menetelmiä, abstraktilla luokalla voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Kuitenkin, koska Java 8, käyttöliittymä voi olla oletus ja staattisia menetelmiä myös.
  3. "Access Modifiers" abstraktin luokan ja liitännän Java - Abstraktilla luokalla voi olla julkisia, yksityisiä ja suojattuja pääsyn muokkaajia, mutta käyttöliittymän menetelmät ovat epäsuorasti julkisia ja abstrakteja. Et voi käyttää muita käyttöoikeuksien muokkaajia, joilla on käyttöliittymämenetelmät ".
  4. Abstraktin luokan ja käyttöliittymän toteutus Java: ssa - Abstrakti luokka voi tarjota käyttöliittymän. Toisaalta käyttöliittymä ei voi tarjota abstraktin luokan toteutusta.
  5. "Avainsana" Abstraktin luokan ja Interface Java- Vaikka "abstrakti" avainsana käytetään abstraktin luokan menetelmän ilmoittamiseen abstraktiksi, rajapinnat ovat kuitenkin täysin eri tarina; heillä on vain julkiset, staattiset lopulliset vakiot ja menetelmäilmoitukset.
  6. Abstraktin luokan ja käyttöliittymän käyttö "Java" -ohjelmassa - Vaikka käyttöliittymä sopii tyypin ilmoittamiseen, abstrakti luokka soveltuu parhaiten koodin uudelleenkäytettävyyteen ja evoluution näkökulmaan. Rajapinta näyttää luokalta, mutta se ei ole luokka.
  7. "Luotettavuus" Abstraktin luokan ja Interface Java- Eräs toinen merkittävä ero abstraktin luokan ja käyttöliittymän välillä on, että edellinen on hieman nopeampi kuin jälkimmäinen, koska haku on yleensä mukana rajapinnassa ennen kuin Java-ohjelmaa kutsutaan.
  8. "Lopulliset muuttujat" Abstraktin luokan ja Interface Java - Liittymässä ilmoitetut muuttujat ovat lopullisia oletusarvoisesti, kun taas abstrakti luokka voi sisältää tai ei saa sisältää muita kuin lopullisia muuttujia.

Abstrakti luokka vs. käyttöliittymä Java: vertailutaulukko

Abstrakti luokka liitäntä
Abstrakti-avainsanaa käytetään abstraktin luokan luomiseen ja sitä voidaan käyttää menetelmien kanssa. Liitännän avainsanaa käytetään rajapinnan luomiseen, mutta sitä ei voi käyttää menetelmien kanssa.
Luokka voi ulottua vain yhden abstraktin luokkaan. Luokka voi toteuttaa useamman kuin yhden käyttöliittymän.
Abstraktilla luokalla voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Rajapinnalla voi olla vain abstrakteja menetelmiä.
Muuttujat eivät ole lopullisia oletuksena. Se voi sisältää ei-lopullisia muuttujia. Muuttujat ovat lopullisia oletusarvoisesti käyttöliittymässä.
Abstrakti luokka voi tarjota käyttöliittymän. Rajapinta ei voi tarjota abstraktin luokan toteutusta.
Se voi olla toteutusmenetelmiä. Se tarjoaa absoluuttisen abstraktiota, eikä sillä voi olla menetelmän toteutuksia.
Se voi olla julkinen, yksityinen, staattinen ja suojattu käyttöoikeuden muokkaaja. Menetelmät ovat implisiittisesti julkisia ja abstrakteja Java-käyttöliittymässä.
Se ei tue useita perintöjä. Se tukee useita perintöjä.
Se sopii erinomaisesti koodin uudelleenkäyttöön ja evoluution näkökulmaan. Se sopii tyypin ilmoittamiseen.

Yhteenveto pistettä Abstraktin luokan ja Interface Java

Sekä abstrakti luokka että liitäntä käytetään abstraktioon; heillä on kuitenkin heidän kohtuullinen osuus eroista. Näiden kahden tärkein ero on abstraktiomenetelmien avulla. Vaikka edellisellä voi olla tai ei ole abstrakteja menetelmiä, jälkimmäinen on implisiittisesti abstrakti. Abstraktilla luokalla voi olla sekä abstrakteja että ei-abstrakteja menetelmiä. Rajapinnalla voi toisaalta olla vain abstrakteja menetelmiä, joten niitä ei voi toteuttaa, mikä tarkoittaa yksinkertaisesti, että käyttöliittymällä ei ole ei-abstrakteja menetelmiä. Abstraktia luokkaa ei voida instantiated, joka estää objektin luomisen. Käyttöliittymä voi toisaalta näyttää luokalta, mutta se ei ole.