Svarbi objekto orientuoto programavimo koncepcija yra paveldimumas. Tai suteikia kelią daiktai apibrėžti santykius tarpusavyje. Kaip rodo pavadinimas, objektas gali paveldėti savybes iš kito objekto.
Kalbant konkrečiau, objektas sugeba perduoti savo būseną ir elgesį savo vaikams. Norėdami paveldėti, daiktai turi turėti bendras savybes.
Į „Java“, klases galima paimti iš kitų klasių, kurias galima paimti iš kitų ir pan. Taip yra todėl, kad jie gali paveldėti ypatybes iš klasės, esančios virš jos, iki pat aukščiausios klasės objekto.
„Java“ paveldėjimo pavyzdys
Tarkime, kad mes sudarome klasę, vadinamą žmogumi, kuri parodo mūsų fizines savybes. Tai bendra klasė, galinti atstovauti jums, man ar bet kam pasaulyje. Jo būklė seka tokius dalykus kaip kojų, rankų skaičius ir kraujo rūšis. Tai elgiasi kaip valgyti, miegoti ir vaikščioti.
Žmogus praverčia, kai supranti, kas mus visus vienus, tačiau, pavyzdžiui, jis negali man pasakyti apie lyčių skirtumus. Tam mums reiktų sukurti du naujus klasių tipus, vadinamus „Vyras ir moteris“. Šių dviejų klasių būsena ir elgesys labai skiriasi, išskyrus tuos, kuriuos jie paveldi iš Žmogaus.
Taigi palikimas leidžia mums suprasti tėvų klasę ir elgesį su vaiku. Vaikų klasė gali išplėsti būseną ir elgesį, kad atspindėtų skirtumus, kuriuos ji apibūdina. Svarbiausias šios sąvokos aspektas, kurį reikia atsiminti, yra tai, kad vaikų klasė yra labiau specializuota tėvų versija.
Kas yra superklasė?
Ryšyje tarp dviejų objektų superklasė yra vardas, suteikiamas klasei, iš kurios paveldima. Tai skamba kaip super duper klasė, tačiau atminkite, kad tai yra bendresnė versija. Geriau naudoti vardus gali būti pagrindinė klasė arba tiesiog tėvų klasė.
Šį kartą norėdami paimti realesnio pavyzdžio, galėtume turėti superklasę pavadinimu Asmuo. Jo būsena rodo asmens vardą, pavardę, adresą, ūgį ir svorį, taip pat jis elgiasi kaip apsipirkti, užsisakyti lovą ir žiūrėti televizorių.
Mes galėtume sudaryti dvi naujas klases, kurias paveldėtų asmuo, vadinamas studentu ir darbuotoju. Jie yra labiau specializuotos versijos, nes, nors ir turi vardus, adresus, žiūri televizorių ir eina apsipirkti, tačiau jie taip pat turi savybes, kurios skiriasi viena nuo kitos.
Darbuotojas gali turėti valstybę, kuri turi pareigų pavadinimą ir darbo vietą, tuo tarpu studentas gali turėti duomenis apie studijų sritį ir mokymosi įstaigą.
Superklasės pavyzdys:
Įsivaizduokite, kad apibrėžiate Asmens klasę:
visuomenės klasės asmuo. { }
Pratęsus šią klasę, galima sukurti naują klasę:
viešosios klasės darbuotojas pratęsia asmenį. { }
Manoma, kad „Asmens“ klasė yra „Darbininkų“ klasės superklasė.
Kas yra poklasis?
Ryšyje tarp dviejų objektų poklasis yra klasės pavadinimas, paveldimas iš superklasės. Nors tai skamba šiek tiek drabrai, atminkite, kad tai labiau specializuota superklasės versija.
Ankstesniame pavyzdyje poklasiai yra mokinys ir darbuotojas.
Poklasiai taip pat gali būti žinomi kaip išvestinės klasės, vaikų klasės arba išplėstinės klasės.
Kiek poklasių galiu turėti?
Galite turėti tiek poklasių, kiek norite. Nėra jokių apribojimų, kiek poklasių gali turėti superklasė. Taip pat paveldėjimo lygių skaičius nėra ribojamas. Klasių hierarchija gali būti pagrįsta tam tikra bendrumo erdve.
Tiesą sakant, jei pažvelgsite į „Java API“ bibliotekas, pamatysite daugybę paveldėjimo pavyzdžių. Kiekviena API klasė yra paveldima iš klasės, vadinamos java.lang. Objektas. Pvz., Kiekvieną kartą naudodamiesi JFrame objektu, jūs einate į ilgą paveldėjimo eilę:
java.langas. Objektas. pratęsė java.awt. Komponentas. pratęsė java.awt. Konteineris. pratęsė java.awt. Langas. pratęsė java.awt. Rėmas. pratęsė javax.swing. JFrame.
„Java“ programoje, kai poklasis paveldi iš superklasės, jis žinomas kaip „pratęsiantis“ superklasę.
Ar mano poklasis gali paveldėti iš daugelio superklasių?
Ne. „Java“ poklasis gali išplėsti tik vieną superklasę.
Kodėl verta naudoti paveldėjimą?
Paveldimumas leidžia programuotojams pakartotinai panaudoti jau parašytą kodą. Žmogaus klasės pavyzdyje mums nereikia kurti naujų laukų „Žmogus ir moteris“ klasėje, kad būtų galima išlaikyti kraujo tipą, nes galime naudoti tą, kuris paveldėtas iš žmonių klasės.
Kitas paveldėjimo naudojimo pranašumas yra tas, kad jis leidžia mums poklasį traktuoti taip, tarsi tai būtų superklasė. Pavyzdžiui, tarkime, kad programa sukūrė kelis objektus „Vyras ir moteris“. Programai gali reikėti iškviesti visų šių objektų miego režimą. Kadangi elgesys miego metu yra žmogaus superklasės elgesys, mes galime sugrupuoti visus vyro ir moters objektus kartu ir elgtis su jais taip, lyg jie būtų žmogaus objektai.