Ieviešana pret paplašināšanu
Ievieš un paplašina ir divi Java programmēšanas valodā atrodami atslēgvārdi, kas nodrošina iespēju pārsūtīt pievienoto funkcionalitāti uz jaunu klasi. Atslēgvārds Implements tiek tieši izmantots saskarnes ieviešanai, savukārt Extends atslēgvārds tiek izmantots mantošanai no (super) klases. Lūdzu, ņemiet vērā, ka mantojuma un saskarņu jēdzieni ir sastopami lielākajā daļā citu objektorientēto programmēšanas valodu, piemēram, C un VB. NET, taču tās piedāvā atšķirīgu sintaksi vai atslēgvārdus šo jēdzienu lietošanai. Šajā rakstā uzmanība tiek pievērsta tikai Java definēto atslēgvārdu ieviešanai un paplašināšanai.
Pagarinās
Atslēgvārds Extends tiek izmantots, lai ieviestu mantojuma jēdzienu Java programmēšanas valodā. Mantojums būtībā nodrošina koda atkārtotu izmantošanu, ļaujot paplašināt esošās klases īpašības un uzvedību ar jaunu definētu klasi. Kad jauna apakšklase (vai atvasināta klase) paplašina virsklasi (vai vecāku klasi), šī apakšklase pārmantos visus superklases atribūtus un metodes. Apakšklase var pēc izvēles ignorēt uzvedību (nodrošināt jaunu vai paplašinātu funkcionalitāti metodēm), kas mantotas no vecākklases. Apakšklase nevar paplašināt vairākas Java superklases. Tāpēc vairākkārtējai mantošanai nevar izmantot paplašinājumus. Lai iegūtu vairākkārtēju mantojumu, jums ir jāizmanto saskarnes, kā paskaidrots tālāk.
Ierīki
Implements atslēgvārds Java programmēšanas valodā tiek izmantots interfeisa ieviešanai klasē. Java saskarne ir abstrakts tips, ko izmanto, lai norādītu līgumu, kas jāievieš klasēm, kuras īsteno šo saskarni. Parasti saskarne satur tikai metožu parakstus un nemainīgas deklarācijas. Jebkurai saskarnei, kas ievieš noteiktu interfeisu, ir jāievieš visas saskarnē definētās metodes vai arī jābūt deklarētai kā abstraktai klasei. Java programmā objekta atsauces veidu var definēt kā saskarnes tipu. Bet šim objektam ir jābūt nullei, vai arī tam jābūt klases objektam, kas ievieš konkrēto saskarni. Izmantojot Java atslēgvārdu Implements, vienā klasē varat ieviest vairākas saskarnes. Interfeiss nevar ieviest citu saskarni. Tomēr interfeiss var paplašināt klasi.
Atšķirība starp ieviešanu un pagarināšanu
Lai gan Implements un Extends ir divi atslēgvārdi, kas nodrošina mehānismu Java programmēšanas valodas klases atribūtu un uzvedības pārmantošanai, tie tiek izmantoti diviem dažādiem mērķiem. Atslēgvārdu Implements izmanto klasei, lai ieviestu noteiktu saskarni, savukārt Extends atslēgvārdu izmanto apakšklasei, lai paplašinātu no superklases. Kad klase ievieš saskarni, šai klasei ir jāievieš visas saskarnē definētās metodes, bet, ja apakšklase paplašina superklasi, tā var ignorēt vecākklasē iekļautās metodes vai arī ne. Visbeidzot, vēl viena galvenā atšķirība starp Implements un Extends ir tā, ka klase var ieviest vairākas saskarnes, bet tā var ietvert tikai vienu Java superklasi. Kopumā agregātu (saskarņu) izmantošana tiek uzskatīta par labvēlīgāku salīdzinājumā ar pagarinājumu (mantojuma) izmantošanu vairāku iemeslu dēļ, piemēram, lielāka elastība un spēja samazināt savienojumu. Tāpēc praksē priekšroka tiek dota programmēšanai uz saskarni, nevis izvēršanai no bāzes klasēm.