Mantojuma izpēte Java programmēšanas valodā

Mantojuma izpēte Java programmēšanas valodā

Mantojums 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.





Mantošanas mērķis programmatūras izstrādē ir atvieglot drošas un uzticamas programmatūras atkārtotu izmantošanu. Viena no galvenajām mantojuma izmantošanas priekšrocībām ir tā, ka tā novērš lieko kodu jūsu programmās.





vai instagram paziņo, kad tiek parādīts dm ekrānuzņēmums

Kā darbojas mantojums

Mantojuma ideja ir tāda, ka daudzām klasēm vai objektiem ir daži vienādi atribūtu un metožu kopumi. Tāpēc, lai radītu uzticamu programmatūru, jaunas klases tagad var iegūt no jau esošām saistītām klasēm un vajadzības gadījumā paplašināt esošos stāvokļus un uzvedību.





Reāls piemērs mantojuma darbībai būtu apsvērt augļus. Šī ir plaša etiķete, kas paredzēta dažādu vienumu iekapsulēšanai.

Ābols ir auglis, tāpat kā apelsīns. Tomēr apelsīns nav ābols, tāpēc, ja jums piederētu veikals, jums nebūtu augļu kā krājuma. Varbūt jūsu krājumā varētu būt sadaļa par augļiem, un šajā sadaļā jums būtu konkrētākas preces, piemēram, āboli un apelsīni.



Tā darbojas mantošana.

Mantojuma izmantošana Java

Mantojumu var izmantot jebkurā programmēšanas valodā, kas izmanto objektorientētu programmēšanas paradigmu. 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ējo mantojumu, savukārt Java atbalsta tikai vienu mantojumu.

Tas nozīmē, ka Java vecāku klasē var būt daudzas bērnu klases, bet katrā bērnu klasē var būt tikai viena vecāka klase (viena mantošana). Tomēr ir veids, kā panākt netiešu daudzkārtēju mantojumu 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ā uz objektu orientēta analīze. Šī procesa laikā frāze a bieži tiek izmantota, lai identificētu iespējamās mantojuma attiecības. Ņemot vērā iepriekš minēto piemēru, jums vajadzētu redzēt, ka augļi būtu mūsu vecāku klase.

Augļu vecāku klases piemērs


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

Viens no ievērojamākajiem vecāku klases aspektiem ir piekļuves modifikators, kas tiek izmantots ar katru mainīgo deklarāciju. Aizsargāts piekļuves pārveidotājs 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.

Tālāk kodā jūs esat iepazīstināts ar konstruktoriem, getteriem un iestatītājiem, kas ir jebkuras Java klases vispārējie elementi. Visbeidzot, jūs iepazīstinās ar divām metodēm (sulu un ēšanu), kas ir izveidotas mūsu programmas vecāku klasē, jo tās ir universālas visiem augļiem - visus augļus var ēst un sulot.

Bērnu klašu izveide Java

Bērnu klases parasti sauc par specializētām vai atvasinātām klasēm, jo ​​tās pārmanto stāvokli un uzvedību no vecākiem un bieži pielāgo šos atribūtus, lai tie būtu specifiskāki.

Turpinot mūsu piemēru, jums vajadzētu saprast, kāpēc oranža būtu piemērota augļu klases bērnu klase.

Oranžā bērna klases piemērs


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

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

Iepriekš minētajā piemērā bērnu klase (oranža) paplašina vecāku klasi (augļi). Tāpēc apelsīnu klase tagad var piekļūt augļu klases stāvoklim un uzvedībai.

Mūsu apelsīnu klases unikālais atribūts tiek identificēts ar mainīgā nosaukuma virsotnēm (kas ir oficiālais nosaukums apelsīnos atrodamajiem mazajiem segmentiem). Šeit parādās specializācija; ne visiem augļiem ir priekšroka, bet visiem apelsīniem ir, tāpēc loģiski ir rezervēt mainīgo lielumu apelsīnu klasei.

Mizošanas metodes pievienošana jau esošajām ēšanas un sulas metodēm ir arī loģiska, jo, lai gan ne visus augļus var mizot, apelsīni bieži tiek mizoti.

Jums jāpatur prātā, ka, ja mēs negrasāmies mainīt esošās ēšanas un sulas metodes, mums tās nebūtu jāiekļauj mūsu apelsīnu klasē. Apelsīnu klases metodes ignorē jebkuru līdzīgu metodi augļu klasē. Tātad, ja visi augļi tiktu ēst un sulas spiestas vienādi, mums nebūtu jāveido šīs metodes apelsīnu klasē.

Lomu konstruktori spēlē mantojumā

Pēc noklusējuma vecāku klases konstruktorus pārmanto bērnu klases. Tāpēc, ja tiek izveidots pakārtotās 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 apelsīns ir auglis.

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

Iepriekšējā primārā konstruktora supermetode ir nepieciešama, jo tā nosaka, ka ikreiz, kad tiek izveidots oranžs objekts ar parametriem, ir jāizsauc primārais augļu klases konstruktors, nevis noklusējuma konstruktors.

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 jūs varat izveidot mantojuma attiecības, izmantojot Java programmēšanas valodu. Turklāt jūs tagad zināt, kā apiet Java vienoto mantojuma noteikumu, izveidojot vecvecāku attiecības.

Attēlu kredīts: Andreas Wohlfahrt / Pexels

Kopīgot Kopīgot Čivināt E -pasts Kā sakārtot uz objektu orientētu 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.

Lasīt Tālāk
Saistītās tēmas
  • Programmēšana
  • Java
  • Objektorientēta programmēšana
Par autoru Kadeiša Kīna(Publicēti 21 raksti)

Kadeisha Kean ir pilna komplekta programmatūras izstrādātājs un tehniskais/tehnoloģiju rakstnieks. Viņai ir izteikta spēja vienkāršot dažus no sarežģītākajiem tehnoloģiskajiem jēdzieniem; materiāla ražošana, ko var viegli saprast ikviens tehnoloģiju iesācējs. Viņa aizraujas ar rakstīšanu, interesantas programmatūras izstrādi un pasaules apceļošanu (caur dokumentālajām filmām).

Vairāk no Kadeisha Kean

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu