Paveldėjimo tyrinėjimas „Java“ programavimo kalba

Paveldėjimo tyrinėjimas „Java“ programavimo kalba

Paveldėjimas yra viena iš pagrindinių objektinio programavimo sąvokų. Programuojant žodis paveldėjimas reiškia santykius, kuriuose vaikų klasė prisiima tėvų klasės būseną ir elgesį.





Programinės įrangos kūrimo paveldėjimo tikslas yra palengvinti saugios ir patikimos programinės įrangos pakartotinį naudojimą. Vienas iš pagrindinių paveldėjimo pranašumų yra tas, kad jūsų programose pašalinamas nereikalingas kodas.





ką galite padaryti su aviečių pi

Kaip veikia paveldėjimas

Paveldėjimo idėja yra ta, kad daugelis klasių ar objektų turi tuos pačius atributus ir metodus. Todėl, siekdami sukurti patikimą programinę įrangą, naujos klasės dabar gali remtis iš jau egzistuojančių susijusių klasių ir prireikus išplėsti esamas būsenas ir elgesį.





Realus pavyzdys, kaip veikia paveldėjimas, būtų apsvarstyti vaisius. Tai plati etiketė, skirta įvairiems elementams apimti.

Obuolis yra vaisius, taip pat ir apelsinas. Tačiau apelsinas nėra obuolys, todėl jei turėtumėte parduotuvę, neturėtumėte vaisių kaip vienos iš savo atsargų. Galbūt jūsų inventoriuje galėtų būti vaisių skyrius, o tame skyriuje - konkretesni daiktai, tokie kaip obuoliai ir apelsinai.



Taip veikia paveldėjimas.

Paveldėjimo naudojimas „Java“

Paveldėjimas gali būti naudojamas bet kuria programavimo kalba, kurioje naudojama į objektą orientuota programavimo paradigma. Tačiau tikslus paveldėjimo būdas priklauso nuo konkrečios programavimo kalbos.





Pavyzdžiui, C ++ taip pat yra į objektą orientuota programavimo kalba . „C ++“ palaiko vadinamąjį daugialypį paveldėjimą, o „Java“ palaiko tik vieną paveldėjimą.

Tai reiškia, kad „Java“ tėvų klasėje gali būti daug vaikų klasių, tačiau kiekvienoje vaikų klasėje gali būti tik vieno iš tėvų klasė (vienas paveldėjimas). Tačiau yra būdas pasiekti netiesioginį daugialypį paveldėjimą „Java“, sukuriant senelių, tėvų ir vaikų santykius.





Tėvų klasės kūrimas „Java“

Pirminės klasės pasirinkimo procesas iš programinės įrangos reikalavimų dokumento yra žinomas kaip į objektą orientuota analizė. Šio proceso metu frazė a dažnai naudojama galimų paveldėjimo santykių nustatymui. Remdamiesi aukščiau pateiktu pavyzdžiu, turėtumėte pamatyti, kad vaisiai būtų mūsų tėvų klasė.

Vaisių tėvų klasės pavyzdys


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
}
}

Vienas iš svarbiausių aukščiau nurodytos pirminės klasės aspektų yra prieigos keitiklis, naudojamas su kiekviena kintamojo deklaracija. Apsaugotas prieigos keitiklis idealiai tinka naudoti tėvų klasėse, nes neleidžia klasėms, kurios nėra antrinės klasės, gauti prieigą prie pirminės klasės duomenų atributų.

Toliau, kode, esate supažindinti su konstruktoriais, geteriais ir nustatytojais, kurie yra bendri bet kurios „Java“ klasės elementai. Galiausiai esate supažindinti su dviem metodais (sultimis ir valgymu), kurie sukurti mūsų programos pagrindinėje klasėje, nes jie yra universalūs visiems vaisiams - visus vaisius galima valgyti ir išspausti sultis.

Vaikų klasių kūrimas „Java“

Vaikų klasės paprastai vadinamos specializuotomis arba išvestinėmis klasėmis, nes jos paveldi būseną ir elgesį iš tėvų ir dažnai pritaiko šiuos atributus, kad jie būtų konkretesni.

Tęsdami mūsų pavyzdį, turėtumėte suprasti, kodėl oranžinė spalva būtų tinkama aukščiau išvardytų vaisių klasė.

Oranžinio vaiko klasės pavyzdys


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
}
}

Yra skirtumas tarp to, kaip atrodo įprasta „Java“ klasės deklaracija, ir to, ką turime aukščiau esančiame kode. Išplečiamasis raktinis žodis yra tai, kas naudojama „Java“, kad būtų galima paveldėti.

Aukščiau pateiktame pavyzdyje vaikų klasė (oranžinė) išplečia tėvų klasę (vaisius). Todėl apelsinų klasė dabar gali pasiekti ir pakeisti vaisių klasės būseną ir elgesį.

Unikalus atributas, kurį turi mūsų oranžinė klasė, yra identifikuojamas su kintamojo pavadinimu supremes (kuris yra oficialus apelsinų aptiktų mažų segmentų pavadinimas). Čia atsiranda specializacija; ne visi vaisiai turi viršenybes, bet visi apelsinai turi, todėl logiška laikyti rezervinį kintamąjį apelsinų klasei.

Taip pat logiška pridėti žievelės metodą prie jau egzistuojančių valgymo ir sulčių metodų, nes nors ne visus vaisius galima nulupti, apelsinai dažnai nulupami.

Turėkite omenyje, kad jei neketintume keisti esamų valgymo ir sulčių metodų, mums nereikėtų jų įtraukti į savo apelsinų klasę. Apelsinų klasės metodai panaikina bet kokį panašų vaisių klasės metodą. Taigi, jei visi vaisiai būtų valgomi ir spaudžiami vienodai, mums nereikėtų kurti šių metodų apelsinų klasėje.

Vaidmenų konstruktoriai vaidina paveldėjimą

Pagal numatytuosius nustatymus pirminių klasių konstruktorius paveldi antrinės klasės. Todėl, jei sukurtas antrinės klasės objektas, tai reiškia, kad pirminis klasės objektas taip pat sukuriamas automatiškai.

Grįžtant prie mūsų pavyzdžio, kiekvieną kartą sukuriant naują oranžinį objektą taip pat sukuriamas vaisių objektas, nes apelsinas yra vaisius.

Užkulisiuose, kai sukuriamas vaikų klasės objektas, pirmiausia vadinamas tėvų klasės konstruktorius, po to - vaikų klasės konstruktorius. Aukščiau esančioje oranžinės spalvos vaikų klasėje, jei bus sukurtas oranžinis objektas be jokių parametrų, bus iškviestas numatytasis vaisių klasės konstruktorius, o po to - numatytasis oranžinės klasės rangovas.

Aukščiau pateiktas mūsų pagrindinio konstruktoriaus super metodas yra būtinas, nes jame nurodoma, kad kuriant oranžinį objektą su parametrais, turėtų būti iškviestas pirminis vaisių klasės pirminis konstruktorius, o ne numatytasis konstruktorius.

Dabar „Java“ galite naudoti paveldėjimą

Iš šio straipsnio jūs galėjote sužinoti, kas yra paveldėjimas, kaip jis veikia ir kodėl tai yra tokia svarbi programavimo sąvoka. Dabar galite sukurti paveldėjimo ryšius naudodami „Java“ programavimo kalbą. Be to, dabar jūs žinote, kaip apeiti vienintelę „Java“ paveldėjimo taisyklę, sukuriant senelių santykius.

Vaizdo kreditas: Andreas Wohlfahrt / Pikseliai

Dalintis Dalintis „Tweet“ Paštu Kaip sutvarkyti į objektą orientuotą kodą paveldint

Tinkamas į objektą orientuotas programavimas reiškia, kad turite žinoti apie paveldėjimą ir tai, kaip jis gali supaprastinti kodavimą ir sumažinti klaidų skaičių.

Skaityti toliau
Susijusios temos
  • Programavimas
  • „Java“
  • Objektinis programavimas
Apie autorių Kadeisha Kean(Paskelbti 21 straipsniai)

Kadeisha Kean yra „Full Stack“ programinės įrangos kūrėja ir techninė/technologijų rašytoja. Ji turi aiškų sugebėjimą supaprastinti kai kurias sudėtingiausias technologines sąvokas; gaminti medžiagą, kurią lengvai supranta bet kuris naujokas. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).

Daugiau iš Kadeisha Kean

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia