Toteutukset vs. laajennukset
Asennukset ja laajennukset ovat kaksi Java-ohjelmointikielessä olevaa avainsanaa, jotka tarjoavat keinot siirtää lisätyt toiminnot uuteen luokkaan. Implements-avainsanaa käytetään nimenomaisesti käyttöliittymän toteuttamiseen, kun taas Extends-avainsanaa käytetään perimään (super) luokasta. Huomaa, että perintö- ja rajapintakäsitteet ovat läsnä useimmissa muissa olio-ohjelmointikielissä, kuten C # ja VB. NET, mutta ne tarjoavat erilaisia syntaksia tai avainsanoja näiden käsitteiden soveltamiseen. Tämä artikkeli keskittyy vain Java-ohjelmassa määritettyihin avainsanoihin.
Pidennetään
Extends-avainsanaa käytetään perintökäsitteen toteuttamiseen Java-ohjelmointikielessä. Perintö tarjoaa olennaisesti koodin uudelleenkäytön sallimalla laajentaa olemassa olevan luokan ominaisuuksia ja käyttäytymistä uudella määritetyllä luokalla. Kun uusi alaluokka (tai johdettu luokka) laajentaa superluokkaa (tai pääluokkaa), kyseinen alaluokka perii kaikki superluokan määritteet ja menetelmät. Alaluokka voi valinnaisesti korvata käyttäytymisen (tarjota menetelmille uuden tai laajennetun toiminnallisuuden), joka on peritty vanhemmalta luokalta. Alaluokka ei voi laajentaa useita Java-superluokkia. Siksi et voi käyttää pidennyksiä useisiin perintöihin. Useiden perintöjen saamiseksi sinun on käytettävä käyttöliittymiä alla kuvatulla tavalla.
Toteutus
Java-ohjelmointikielen avainsanaa käytetään luokan käyttöliittymän toteuttamiseen. Java-käyttöliittymä on abstrakti tyyppi, jota käytetään määrittelemään sopimus, jonka luokan tulisi toteuttaa, joka toteuttaa kyseisen rajapinnan. Yleensä käyttöliittymä sisältää vain metodin allekirjoituksia ja jatkuvia ilmoituksia. Kaikkien käyttöliittymien, jotka toteuttavat tietyn käyttöliittymän, tulisi toteuttaa kaikki käyttöliittymässä määritellyt menetelmät tai ne tulisi julistaa abstraktiksi luokaksi. Java-tilassa objektiviittauksen tyyppi voidaan määritellä käyttöliittymätyypiksi. Mutta kyseisen objektin on oltava joko nolla tai sen tulisi sisältää luokan objekti, joka toteuttaa kyseisen tietyn käyttöliittymän. Käyttämällä Java-sovelluksessa Implements-avainsanaa voit toteuttaa useita rajapintoja yhteen luokkaan. Liitäntä ei voi toteuttaa toista käyttöliittymää. Käyttöliittymä voi kuitenkin laajentaa luokkaa.
Ero toteutusten ja laajennusten välillä
Vaikka Implements ja Extends ovat kaksi avainsanaa, jotka tarjoavat mekanismin periä attribuutit ja käyttäytyminen luokalle Java-ohjelmointikielellä, niitä käytetään kahteen eri tarkoitukseen. Implements-avainsanaa käytetään luokassa tietyn käyttöliittymän toteuttamiseen, kun taas Extends-avainsanaa käytetään alaluokan laajentamiseen superluokasta. Kun luokka toteuttaa rajapinnan, kyseisen luokan on toteutettava kaikki käyttöliittymässä määritellyt menetelmät, mutta kun alaluokka laajentaa superluokkaa, se voi ohittaa emoluokkaan sisältyvät menetelmät. Lopuksi toinen tärkeä ero Implementsin ja Extendsin välillä on se, että luokka voi toteuttaa useita rajapintoja, mutta se voi ulottua vain yhdestä Java-superluokasta. Yleensä laitteiden (rajapintojen) käyttöä pidetään suotuisampana verrattuna laajennusten (perintö),useista syistä, kuten suurempi joustavuus ja kyky minimoida kytkentä. Siksi käytännössä ohjelmointi rajapinnalle on suositeltavampaa kuin perusluokista ulottuminen.