Tiivistelmä luokka vs. käyttöliittymä Java-versiossa
Jotta ymmärrät abstraktin luokan ja Java-käyttöliittymän väliset erot, on ensinnäkin tärkeää ymmärtää jokainen näistä itsenäisesti. Java-abstraktia luokkaa käytetään alaluokkien ilmoittamiseen, joilla on joukko yhteisiä ominaisuuksia. Abstraktin luokan yleinen käyttö on muiden luokkien superluokka, joka käytännössä sallii sen pidentää abstraktia luokkaa. Abstraktia avainsanaa käytetään abstraktin luokan ilmoituksessa. Aivan kuten millä tahansa muulla luokalla, abstraktissa luokassa on kentät, jotka kuvaavat menetelmiä ja ominaisuuksia, joita luokka voi suorittaa. Luokkaa ei voida aloittaa pelkästään abstraktin luokan julistamisella
Java-käyttöliittymä voidaan rinnastaa protokollaan. Se edustaa esiasetettua ja sovittua käyttäytymistä, joka mahdollistaa toisiinsa liittymättömien kohteiden vuorovaikutuksen helpottamisen. Käyttäjästä riippuen käyttöliittymässä on avain toteutettaviin eri toimintoihin. Rajapinta toimii siis linkkinä tuottajan ja kuluttajan välillä. Java-liitännät ovat siis ryhmä menetelmiä, jotka sisältävät tyhjiä kappaleita, joilla voi olla vakioilmoitukset. Altistamalla luokka Java-käyttöliittymälle, se tarkoittaa, että luokan odotettu käyttäytyminen on kaikkien rajapinnan menetelmien toteuttamista.
erot
Ensinnäkin abstrakti luokka sallii kentät, jotka eivät ole staattisia tai lopullisia, toisin kuin rajapinnoissa käytetyt staattiset ja lopulliset kentät. Rajapinnoissa ei voi olla käytössä mitään toteutuskoodia, ja abstraktissa luokassa voi olla toteutuskoodia. Abstraktissa luokassa levitetyillä toteutuskoodeilla voi olla muutama tai kaikki toteutetut menetelmät. Oletusarvon mukaan kaikki käyttöliittymän menetelmät ovat ”abstrakteja”.
Näkyvyys on mahdollista myös menetelmille tai abstraktin luokan jäsenille, jotka voivat vaihdella, kuten julkinen, suojattu, yksityinen tai ei mitään. Toisaalta rajapinnan näkyvyys voidaan asettaa vain yhdelle näkyvyysmuodolle, joka on ”julkinen”.
Abstrakti luokka perii objektiluokan automaattisesti. Tämä tarkoittaa käytännössä, että menetelmät, kuten klooni () ja ekvivalentti (), ovat mukana. Rajapinnassa objektiluokan periminen ei ole mahdollista. Tämän jälkeen abstraktilla luokalla on kyky omata rakentaja, mutta rajapinnalla ei voi olla sellaista.
Java-käyttöliittymällä on myös erittäin tärkeä toiminto useiden perintöjen toteuttamisessa, koska luokalla voi olla vain yksi superluokka. Vaikka vain yksi superluokka voi olla läsnä, se voidaan toteuttaa missä tahansa lukumäärässä rajapintoja. Abstraktissa luokassa ei ole mahdollista saada useita perintöjä.
Suorituskyvyssä rajapintojen toteuttaminen on yleensä hitaampaa kuin abstraktissa luokassa, lähinnä johtuen ylimääräisestä suunnasta löytää vastaava menetelmä luokasta. Ero on kuitenkin hidastunut nykyaikaisten Java-virtuaalikoneiden vuoksi, joita päivitetään jatkuvasti.
Menetelmän lisääminen käyttöliittymään edellyttää, että jäljität kaikki toteutusluokat, jotka toteuttavat tietyn rajapinnan. Vaihtoehtoisesti voit laajentaa käyttöliittymää niin, että sillä voi olla ylimääräisiä menetelmiä. Jos satut käsittelemään abstraktia luokkaa, tarvitaan vain menetelmän oletustoimenpiteen lisääminen ja koodi toimii edelleen. Sikäli kuin abstraktien luokkien ja rajapintojen välillä on eroja, on tärkeää huomata, että ne eivät ole kilpailijoita, mutta tässä mainitut erot palvelevat toisiaan.
Yhteenveto
Tiivistelmäluokan kentät eivät ole staattisia tai lopullisia toisin kuin rajapinta, jossa on staattiset ja lopputaulut.
Mitään toteutuskoodia ei voida käyttää rajapinnoissa, kun taas sitä voidaan käyttää abstraktissa luokassa.
Rajapinnan näkyvyys voi olla vain julkinen, kun taas abstrakti luokan näkyvyys voi vaihdella.
Abstrakti luokka perii objektiluokan automaattisesti, mutta se ei ole mahdollista käyttöliittymässä.
Abstrakti luokka on nopeampi kuin käyttöliittymä toteutuksessa.