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

Anonim

Abstrakti luokka vs käyttöliittymä Java

Abstraktin luokan ja Java-rajapinnan välisten erojen ymmärtämiseksi on tärkeää ensin ymmärtää jokainen niistä itsenäisesti. Java-abstrakti luokkaa käytetään alaluokkien julistuksessa, jossa on yhteisiä ominaisuuksia. Abstraktin luokan yleinen käyttö on muiden luokkien superluokka, joka mahdollistaa sen, että se voi laajentaa abstraktia luokkaa. Abstraktin luokan ilmoituksessa käytetään abstraktia avainsanaa. Aivan kuten muillakin luokilla olisi, abstraktilla luokalla on kentät, jotka kuvaavat menetelmiä ja ominaisuuksia, joita luokka voi suorittaa. Yksinkertaisella abstraktin luokan ilmoituksella luokalle ei voida aloittaa

Java-liitäntä voidaan rinnastaa protokollaan. Se edustaa ennalta asetettua ja sovittua käytäntöä, joka mahdollistaa etuyhteydettömien esineiden vuorovaikutuksen helpottamisen. Käyttäjästä riippuen käyttöliittymällä on avain erilaisiin toteutettaviin toimiin. Käyttöliittymä toimii siis tuottajan ja kuluttajan välisenä linkkinä. Java-liitännät ovat siis ryhmä menetelmiä, jotka sisältävät tyhjiä kappaleita, joilla voi olla vakioita lausumia. Kun luodaan luokan Java-käyttöliittymään, se tarkoittaa, että luokan käyttäytyminen on kaikkien käyttöliittymän menetelmien toteutus.

erot

Ensinnäkin abstrakti luokka sallii kentät, jotka eivät ole staattisia tai lopullisia, verrattuna rajapintoihin käytettäviin staattisiin ja lopullisiin kenttiin. Liitännöissä ei voi käyttää mitään täytäntöönpanokoodia, ja abstraktissa luokassa voi olla täytäntöönpanokoodi. Abstraktissa luokassa esitellyillä toteutuskoodilla voi olla muutamia tai kaikkia toteutuneita menetelmiä. Oletuksena kaikki käyttöliittymän menetelmät ovat "abstrakteja".

Näkyvyys on mahdollista myös abstraktin luokan menetelmille tai jäsenille, jotka voivat vaihdella kuten julkinen, suojattu, yksityinen tai ei lainkaan. Rajapinnan näkyvyys voidaan toisaalta asettaa vain yhteen näkyvyyteen, joka on "julkinen"."

Abstrakti luokka perii automaattisesti objektiluokan. Tämä tarkoittaa itse asiassa, että menetelmät, kuten klooni () ja tasa-arvo (), ovat mukana. Rajapinnassa objektiluokkien perintöä ei ole mahdollista. Tämän jälkeen abstraktilla luokalla on kyky saada konstruktori, mutta rajapinnalla ei voi olla sellaista.

Java-käyttöliittymällä on myös erittäin tärkeä tehtävä useiden perintöjen toteuttamisessa, koska luokalla voi olla vain yksi superluokka. Vaikka vain yksi superluokka voi olla läsnä, se voidaan toteuttaa missä määrin rajapintoja. Ei ole mahdollista saada useita perintöjä abstraktissa luokassa.

Suorituskyvyssä käyttöliittymät ovat yleensä hitaampia toteutuksessa kuin abstrakti luokka johtuvat pääasiassa ylimääräisestä suuntauksesta löytää vastaava menetelmä luokassa. Ero on kuitenkin hidastunut nykyaikaisten Java-virtuaalikoneiden vuoksi, joita päivitetään jatkuvasti.

Menetelmän lisääminen käyttöliittymässä edellyttää, että seuraat kaikkia toteutusluokkia, jotka toteuttavat tietyn käyttöliittymän. Vaihtoehtoisesti voit laajentaa käyttöliittymää niin, että se saa ylimääräisiä menetelmiä. Jos sattuu käsittelemään abstraktia luokkaa, tarvitset vain menetelmän oletustulostuksen ja koodin jatkaminen. Koska abstraktien luokkien ja rajapintojen välillä on eroja, on tärkeää huomata, että ne eivät ole kilpailijoita, mutta tässä mainitut erot täydentävät toisiaan.

Yhteenveto

  1. Tiivistelmä luokan kentät eivät ole staattisia tai lopullisia verrattuna käyttöliittymä, joka on staattinen ja lopullinen taulukot.

  2. Sovelluskoodia ei voi käyttää rajapinnoissa, kun sitä voidaan käyttää abstraktissa luokassa.

  3. Liitännän näkyvyys voi olla vain julkinen, kun taas abstraktien luokkien näkyvyys voi vaihdella.

  4. Abstrakti luokka perii automaattisesti objektiluokan, mutta se ei ole käyttöliittymässä.

  5. Abstrakti luokka on nopeampi kuin sovelluksen käyttöliittymä.