Mantošana ir viens no objektorientētās programmēšanas pamatjēdzieniem. Programmēšanā vārds mantojums apzīmē attiecības, kurās bērnu klase uzņemas vecāku klases stāvokli un uzvedību.

Mantojuma mērķis programmatūras izstrādē ir veicināt drošas un uzticamas programmatūras atkārtotu izmantošanu. Viens no galvenajiem mantojuma izmantošanas ieguvumiem ir tas, ka tas novērš lieko kodu jūsu programmās.

Kā darbojas mantojums

Mantojuma ideja ir tāda, ka daudzām klasēm vai objektiem piemīt viens un tas pats atribūtu un metožu kopums. Tāpēc, ņemot vērā uzticamas programmatūras ražošanu, jaunas klases tagad var izmantot jau esošās saistītās klases un, ja nepieciešams, paplašināt esošos stāvokļus un uzvedību.

Reāls mantojuma darbības piemērs būtu augļu apsvēršana. Šī ir plaša etiķete, kas paredzēta dažādu vienumu iekļaušanai.

Ābols ir auglis un arī apelsīns. Tomēr apelsīns nav ābols, tāpēc, ja jums pieder veikals, jums nebūtu augļu kā vienas no jūsu krājuma precēm. Iespējams, jūsu krājumā varētu būt augļu sadaļa, un šajā sadaļā jums būtu precīzākas preces, piemēram, āboli un apelsīni.

Tā darbojas mantošana.

Mantojuma izmantošana Java

Mantojumu var izmantot jebkurā programmēšanas valodā, kurā tiek izmantots objektorientētas programmēšanas paradigma. Tomēr precīzs mantojuma izmantošanas veids ir atkarīgs no konkrētās programmēšanas valodas.

Piemēram, C ++ ir arī objektorientēta programmēšanas valoda. C ++ atbalsta tā saukto vairākkārtēju mantošanu, savukārt Java atbalsta tikai vienu mantojumu.

Tas nozīmē, ka Java valodā vecāku klasei var būt daudz bērnu klases, bet katrā bērnu klasē var būt tikai viena vecāka klase (viens mantojums). Tomēr ir veids, kā panākt netiešu vairākkārtēju mantošanu Java, izveidojot vecvecāku, vecāku un bērnu attiecības.

Vecāku klases izveide Java

Vecāku klases atlases process no programmatūras prasību dokumenta ir pazīstams kā objektorientēta analīze. Šī procesa laikā frāzi “ir a” bieži lieto, lai identificētu iespējamās mantojuma attiecības. Izmantojot iepriekš minēto piemēru, jums vajadzētu būt iespējai redzēt, ka augļi būs mūsu vecāku klase.

Augļu vecāku klases piemērs


augļu sabiedriskā klase {
// Mainīgā deklarācija
aizsargātas stīgu sēklas;
aizsargāta String skinColor;
aizsargāta virknes garša;
// Noklusējuma konstruktors
publiskais auglis () {
sēkla = "";
skinColor = "";
garša = "";
}
// Primārais konstruktors
publiskais auglis (virtenes sēklas, virknes ādas krāsa, virknes garša) {
šī.sēkla = sēkla;
this.skinColor = skinColor;
šī.garša = garša;
}
// getters un seters
publiskā virkne getSeed () {
atgriezt sēklas;
}
public void setSeed (virknes sēkla) {
šī.sēkla = sēkla;
}
publiskā virkne getSkinColor () {
atgriezties skinColor;
}
public void setSkinColor (String skinColor) {
this.skinColor = skinColor;
}
publiskā virkne getTaste () {
atgriešanās garša;
}
public void setTaste (Stīgas garša) {
šī.garša = garša;
}
// ēst metode
public void ēst () {
// vispārīgs kods, kā ēst augļus
}
// sulas metode
publiska tukšuma sula () {
// vispārīgs kods, kā sulu sulot
}
}

Viens no iepriekšminēto vecāku klases ievērojamākajiem aspektiem ir piekļuves modifikators, kas tiek izmantots katrā mainīgā deklarācijā. “Aizsargātais” piekļuves modifikators ir ideāli piemērots lietošanai vecāku klasēs, jo tas neļauj klasēm, kas nav bērni, piekļūt vecāku klases datu atribūtiem.

Turpmāk kodā jūs iepazīstināt ar konstruktoriem, getters un iestatītājiem, kas ir vispārējs jebkuras Java klases celtniecības elements. Visbeidzot, jūs iepazīstina ar divām metodēm (sula un ēšana), kas tiek radītas mūsu programmas vecāku klasē, jo tās ir universālas visiem augļiem - visus augļus var ēst un sulas.

Bērnu nodarbību izveide Java

Bērnu klases parasti sauc par specializētām vai atvasinātām klasēm, jo ​​tās pārņem vecāku stāvokli un izturēšanos, un bieži vien šie atribūti tiek pielāgoti specifiskākiem.

Turpinot ar mūsu piemēru, jums vajadzētu būt iespējai saprast, kāpēc apelsīns būtu piemērota iepriekš minēto augļu klases bērnu klase.

Oranžas bērnu klases piemērs


sabiedriskā klase Oranža pagarina augļus {
// mainīgā deklarācija
privātie int augstākie;
// noklusējuma konstruktors
publiskais oranžs () {
augstākais = 0;
}
// primārais konstruktors
publiskais apelsīns (virknes sēklas, virknes ādas krāsa, virknes garša, augstākās pakāpes) {
super (sēklas, ādas krāsa, garša);
tas.augstākie = augstākie;
}
// getters un seters
public int getsupremes () {
atgriešanās augstākie;
}
public void setsupremes (int supremes) {
tas.augstākie = augstākie;
}
// ēst metode
public void ēst () {
// kā ēst apelsīnu
}
// sulas metode
publiska tukšuma sula () {
// kā sulu un apelsīnu
}
// mizas metode
public void peel () {
// kā nomizot apelsīnu
}
}

Pastāv atšķirība starp to, kā izskatās parasta Java klases deklarācija, un to, kas mums ir mūsu kodā iepriekš. Atslēgvārds “paplašina” ir tas, kas tiek izmantots Java, lai padarītu mantojumu iespējamu.

Mūsu piemērā virs bērnu klases (oranža) paplašina vecāku klasi (augļus). Tāpēc oranžā klase tagad var piekļūt augļu klases stāvoklim un uzvedībai, kā arī mainīt to.

Unikālais atribūts, kas piemīt mūsu oranžajai klasei, tiek identificēts ar mainīgo nosaukuma virsotnēm (kas ir oficiālais nosaukums mazajiem segmentiem, kas atrodami apelsīnos). Šeit parādās specializācija; ne visiem augļiem ir augstākā daļa, bet visiem apelsīniem ir, tāpēc loģiski ir rezervēt augstāko mainīgo oranžajai klasei.

“Mizas” metodes pievienošana jau esošajām “ēst” un “sula” metodēm ir arī loģiski, jo, lai arī ne visus augļus var nomizot, apelsīnus bieži mizo.

Jums jāpatur prātā, ka, ja mēs nedomājām mainīt esošās “ēst” un “sula” metodes, mums tās nevajadzētu iekļaut mūsu apelsīnu klasē. Apelsīnu klases metodes aizstāj jebkuru līdzīgu metodi augļu klasē. Tātad, ja visi augļi tiktu ēst un suloti vienā un tajā pašā veidā, mums nevajadzētu radīt šīs metodes apelsīnu klasē.

Lomu konstruktori spēlē mantojumā

Pēc noklusējuma vecāku klases konstruktori tiek pārmantoti bērnu klasēs. Tāpēc, ja tiek izveidots bērnu klases objekts, tas nozīmē, ka arī vecāku klases objekts tiek izveidots automātiski.

Atgriežoties pie mūsu piemēra, katru reizi, kad tiek izveidots jauns oranžs objekts, tiek izveidots arī augļu objekts, jo oranžs ir auglis.

Aizkulisēs, kad tiek izveidots bērnu klases objekts, vispirms tiek saukts vecāku klases konstruktors, kam seko bērnu klases konstruktors. Ja mūsu oranžajā bērnu klasē tiek izveidots oranžs objekts bez parametriem, tiks izsaukts mūsu noklusējuma augļu klases konstruktors, kam sekos mūsu noklusējuma oranžas klases darbuzņēmējs.

Iepriekš minētā primārā konstruktora “super” metode ir nepieciešama, jo tā norāda, ka primārais konstruktors - un nevis noklusējuma konstruktors - vecāku augļu klase jāizsauc vienmēr, kad ir oranžs objekts ar parametriem izveidots.

Tagad jūs varat izmantot mantojumu Java

No šī raksta jūs varējāt uzzināt, kas ir mantojums, kā tas darbojas un kāpēc tas ir tik svarīgs jēdziens programmēšanā. Tagad varat izveidot mantojuma attiecības, izmantojot Java programmēšanas valodu. Turklāt tagad jūs zināt, kā apiet Java vienreizējās mantošanas kārtību, izveidojot vecvecāku attiecības.

Attēlu kredīts: Andreas Wohlfahrt /Peksels

E-pasts
Kā organizēt savu objektorientēto kodu ar mantojumu

Pareiza objektorientēta programmēšana nozīmē, ka jums jāzina par mantojumu un to, kā tas var vienkāršot kodēšanu un samazināt kļūdas.

Lasiet Tālāk

Saistītās tēmas
  • Programmēšana
  • Java
  • Uz objektu orientēta programmēšana
Par autoru
Kadeiša Kīna (Publicēti 3 raksti)

Kadeisha Kean ir pilnas programmatūras izstrādātājs un tehnisko / tehnoloģiju rakstnieks. Viņai ir īpaša spēja vienkāršot dažus no vissarežģītākajiem tehnoloģiskajiem jēdzieniem; ražo materiālu, kuru viegli var saprast jebkurš iesācējs tehnoloģija. Viņa aizrauj rakstīšanu, interesantas programmatūras izstrādi un ceļošanu pa pasauli (izmantojot dokumentālās filmas).

Vairāk no Kadeisha Kean

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.