Įdiegimai prieš išplečiamus
Įgyvendina ir išplečia – tai du raktiniai žodžiai, rasti Java programavimo kalboje, suteikiantys galimybę perkelti papildomas funkcijas į naują klasę. Įgyvendinimo raktinis žodis naudojamas tiesiogiai diegti sąsają, o išplėstinis raktinis žodis naudojamas paveldėjimui iš (super) klasės. Atkreipkite dėmesį, kad paveldėjimo ir sąsajų sąvokos yra daugumoje kitų objektinio programavimo kalbų, pvz., C ir VB. NET, tačiau jos siūlo skirtingą sintaksę arba raktinius žodžius šioms sąvokoms taikyti. Šiame straipsnyje dėmesys sutelkiamas tik į „Java“apibrėžtus raktinius žodžius „Įgyvendina ir išplečia“.
Išsiplečia
Raktažodis Extends naudojamas paveldėjimo koncepcijai įgyvendinti Java programavimo kalboje. Paveldėjimas iš esmės suteikia kodo pakartotinį naudojimą, leidžiant išplėsti esamos klasės savybes ir elgesį naujai apibrėžta klase. Kai naujas poklasis (arba išvestinė klasė) išplečia superklasę (arba pirminę klasę), tas poklasis paveldės visus super klasės atributus ir metodus. Poklasis gali pasirinktinai nepaisyti elgsenos (suteikti naujų arba išplėstų metodų funkcijų), paveldėtą iš pirminės klasės. Poklasis negali išplėsti kelių „Java“super klasių. Todėl negalite naudoti plėtinių daugialypiam paveldėjimui. Norėdami turėti kelis paveldėjimus, turite naudoti sąsajas, kaip paaiškinta toliau.
Padargai
Įdiegtas raktinis žodis Java programavimo kalba yra naudojamas klasės sąsajai įdiegti. „Java“sąsaja yra abstraktus tipas, naudojamas nurodyti sutartį, kurią turėtų įgyvendinti klasės, įgyvendinančios tą sąsają. Paprastai sąsajoje bus tik metodų parašai ir pastovios deklaracijos. Bet kuri sąsaja, kuri įgyvendina tam tikrą sąsają, turėtų įgyvendinti visus sąsajoje apibrėžtus metodus arba turi būti deklaruojama kaip abstrakčioji klasė. Java programoje objekto nuorodos tipas gali būti apibrėžtas kaip sąsajos tipas. Bet tas objektas turi būti nulinis arba turi turėti klasės objektą, kuris įgyvendina tą konkrečią sąsają. Naudodami „Java“raktinį žodį įgyvendina, vienoje klasėje galite įdiegti kelias sąsajas. Sąsaja negali įdiegti kitos sąsajos. Tačiau sąsaja gali išplėsti klasę.
Skirtumas tarp įgyvendinamų ir pratęsimų
Nors įgyvendina ir išplečia yra du raktiniai žodžiai, suteikiantys atributų ir elgesio paveldėjimo mechanizmą klasei Java programavimo kalba, jie naudojami dviem skirtingais tikslais. Raktinis žodis „implements“naudojamas klasei, norint įgyvendinti tam tikrą sąsają, o „Extends“raktinis žodis naudojamas poklasiui išplėsti iš super klasės. Kai klasė įgyvendina sąsają, ta klasė turi įgyvendinti visus sąsajoje apibrėžtus metodus, tačiau kai poklasis išplečia superklasę, ji gali nepaisyti metodų, įtrauktų į pirminę klasę, arba ne. Galiausiai, dar vienas pagrindinis skirtumas tarp įgyvendina ir išplečiamas yra tas, kad klasė gali įdiegti kelias sąsajas, tačiau ji gali tęstis tik iš vienos super klasės Java. Apskritai, padargų (sąsajų) naudojimas laikomas palankesniu, palyginti su prailginimo (paveldėjimo) naudojimu, dėl kelių priežasčių, tokių kaip didesnis lankstumas ir galimybė sumažinti susiejimą. Todėl praktikoje pirmenybė teikiama programavimui į sąsają, o ne plėtojant bazines klases.