Paveldėjimas yra centrinis obiektinio programavimo (OOP) konceptas ir dažnai laikomas vienu iš efektyvumo didinimo elementų. Šiame vadove geriau suprasi paveldėjimą Java kalboje. Išmoksi, kaip dirbti su prieigos modifikatoriais, naudoti konstruktorius ir kokią rolę kapsuliacija atlieka paveldėjime.
Svarbiausi įžvalgai
- Paveldėjimas leidžia paveldėti klasės savybes ir metodus.
- Priedo modifikatorius private apriboja prieigą prie kintamųjų ar metodų, tuo tarpu protected leidžia platesnę prieigą klasėms, kurios paveldi iš pradinės klasės.
- Konstruktorius turi būti kviečiamas subklasėje, kad objektai būtų teisingai inicijuojami.
- Interfeiso metodai gali būti naudojami bendrų klasių kontekste, kai turite kelias specifines klases.
Kai pavyzdžio vadovas
Priedo modifikatoriai: protected vs. private
Jei klasėje, tokioje kaip Transporto priemonė, deklaruoji kintamąjį (pvz., Spalva) kaip protected, tuomet gali tiesiogiai naudoti šį kintamąjį iš išvestinės klasės (pvz., Automobilis). Tačiau, jei kintamasis yra deklaruotas kaip private, tu negalėsi tiesiogiai į jį kreiptis subklasėje.

Tai reiškia, kad prieiga prie private kintamųjų gali būti tik per getter ir setter metodus.
Pavyzdys rodo, kad turime naudoti setSpalva ir getSpalva, kad galėtume pasiekti private kintamąjį spalva.

Jei kintamasis deklaruotas kaip protected, gali paprastai pasiekti jį Automobilio klasėje ir keisti vertę.
Konstruktorių naudojimas paveldėjime
Apibrėždamas subklasę, turi užtikrinti, kad būtų teisingai kviečiamas aukštesnės klasės konstruktorius.

Tai užtikrina, kad spalva kuriant Automobilio objektą būtų tinkamai inicializuota.

Įsitikink, kad subklasėje apibrėži konstruktorių, kuris tinkamai perduoda aukštesnės klasės parametrus.
Paveldėjimas ir metodų kvietimai
Dvi klasės, Transporto priemonė ir Automobilis, leidžia tau naudoti bendrus kintamuosius ir metodus. Jei apibrėši metodą Transporto priemonėje, galėsi jį naudoti Automobilyje, nesukodavęs jo vėl.

Čia kviečiama metodą transportoPriemonesSpalvaIšvesti, kuris išveda spalvos vertę, gautą per getSpalva metodą.
Kvietimo apribojimai metodams
Jei bandai kvieči metodą subklasėje, kuris nėra prieinamas, gausi kompiliavimo klaidą. Mūsų pavyzdyje transporto priemonės objektas turi būti perduotas, kad būtų galima kvieti getSpalva metodą.

Praktiškai tai reiškia, kad turi užtikrinti, kad metodas atitiktų tavo duomenų tipą prieš jį kviesdamas. Taigi gali perduoti dviratį, automobilį arba abu į metodą, kuris tikisi tik transporto priemonių objektų.
Pavyzdys, kaip kvieti instancijos metodus statiniuose kontekstuose
Pastebėk, kad statiniuose metoduose (static) this raktinis žodis negali būti naudojamas, nes jis nesusijęs su konkrečia instancija. Tokiais atvejais galbūt turėtum naudoti kitą metodą arba perorganizuoti logiką.

Šis kvietimas teisingai išvedė spalvą meinAuto objekto.
Santrauka - Paveldėjimas Java kalboje: Pradedančiųjų vadovas
Paveldėjimas yra svarbus konceptas programavime su Java, padedantis tau moduliuoti ir panaudoti kodą iš naujo. Šiame vadove sužinojai pagrindus apie prieigos modifikatorius, konstruktorius ir metodų kvietimus, susijusius su paveldėjimu.
Dažnai užduodami klausimai
Kaip galiu pasiekti private kintamuosius subklasėje?Private kintamųjų subklasėje negalima pasiekti tiesiogiai. Naudok Getter ir Setter metodus.
Koks skirtumas tarp protected ir private?Protected leidžia prieigą subklasėje ir toje pačioje paketo, tuo tarpu private yra prieinamas tik savo klasėje.
Ar turiu apibrėžti konstruktorius subklasėje?Taip, jei pritaikėte aukštesnės klasės konstruktorių, taip pat turite atitinkamai apibrėžti konstruktorius subklasėje.
Ar galiu laisvai perrašyti aukštesniųjų klasių metodus subklasėse?Taip, gali perrašyti metodus, kurie nėra pažymėti kaip final arba static, subklasėje, kad įgyvendintum konkrečią elgseną.