Pärandi uurimine Java programmeerimiskeeles

Pärandi uurimine Java programmeerimiskeeles

Pärand on üks objektorienteeritud programmeerimise põhikontseptsioone. Programmeerimisel tähistab sõna pärandus suhet, milles lasteklass eeldab vanemklassi olekut ja käitumist.





Pärandi eesmärk tarkvaraarenduses on hõlbustada ohutu ja usaldusväärse tarkvara taaskasutamist. Pärandi kasutamise üks peamisi eeliseid on see, et see kõrvaldab teie programmides üleliigse koodi.





kuidas tahkis -draivi pühkida

Kuidas pärand toimib

Pärandi idee seisneb selles, et paljudel klassidel või objektidel on mõned samad atribuutide ja meetodite komplektid. Seetõttu saavad usaldusväärsed tarkvara tootmise vaimus uued klassid nüüd tugineda juba olemasolevatele seotud klassidele ja vajadusel laiendada olemasolevaid olekuid ja käitumist.





Pärismaailma näide pärimise toimimisest oleks puuviljade kaalumine. See on lai silt, mis on mõeldud erinevate üksuste kapseldamiseks.

Õun on vili ja apelsin samuti. Apelsin ei ole aga õun, nii et kui teil oleks pood, ei oleks teil puuvilju ühe laovaruna. Võib -olla võiksite oma nimekirjas olla puuviljade sektsiooni ja selle jaotise all oleks teil täpsemad esemed, näiteks õunad ja apelsinid.



Nii toimib pärimine.

Pärandi kasutamine Java -s

Pärandit saab kasutada mis tahes programmeerimiskeeles, mis kasutab objektorienteeritud programmeerimise paradigmat. Pärimise kasutamise täpne viis sõltub aga konkreetsest programmeerimiskeelest.





Näiteks, C ++ on ka objektorienteeritud programmeerimiskeel . C ++ toetab mitut pärandit, Java aga ainult üksikut pärimist.

See tähendab, et Java -s võib vanemaklassil olla palju alamklasse, kuid igal lasteklassil võib olla ainult üksikvanema klass (üksik pärimine). Siiski on olemas viis Java kaudse mitmekordse pärandi saavutamiseks, luues vanavanemate, vanemate ja laste suhte.





Vanemklassi loomine Java -s

Tarkvara nõuete dokumendist vanemklassi valimise protsessi nimetatakse objektorienteeritud analüüsiks. Selle protsessi käigus kasutatakse fraasi a sageli võimalike pärimisseoste tuvastamiseks. Ülaltoodud näite põhjal peaksite nägema, et puuviljad oleksid meie vanemate klass.

Puuviljavanemate klassi näide


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

Ülaltoodud vanemklassi üks tähelepanuväärsemaid aspekte on juurdepääsu muutuja, mida kasutatakse iga muutujadeklaratsiooni korral. Kaitstud juurdepääsu muutja on ideaalne kasutamiseks vanemklassides, kuna see takistab klassidel, mis ei ole alamklassid, juurdepääsu vanemklassi andmeatribuutidele.

Koodi allpool saate tutvuda konstruktorite, getterite ja seadistajatega, mis on mis tahes Java -klassi üldised ehitusplokid. Lõpuks tutvustatakse teile kahte meetodit (mahl ja söömine), mis on loodud meie programmi vanemklassis, kuna need on universaalsed kõigile puuviljadele - kõiki puuvilju saab süüa ja mahla valmistada.

Alamklasside loomine Java -s

Alamklasse nimetatakse tavaliselt spetsialiseeritud või tuletatud klassideks, kuna nad pärivad vanemalt oleku ja käitumise ning kohandavad neid atribuute sageli täpsemaks.

Jätkates meie näidet, peaksite nägema, miks apelsin oleks ülaltoodud puuviljaklassi sobiv lasteklass.

Oranži lapse klassi näide


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

Tavalise Java klassi deklaratsiooni väljanägemise ja ülaltoodud koodi vahel on erinevus. Laiendav märksõna on see, mida Java -s kasutatakse pärimise võimaldamiseks.

Meie ülaltoodud näites laiendab lasteklass (oranž) vanemklassi (puu). Seetõttu on apelsiniklassil nüüd juurdepääs puuviljaklassi olekule ja käitumisele ning seda võimalik muuta.

Meie oranži klassi ainulaadne atribuut on identifitseeritud muutuja nimega supremes (mis on apelsinides leiduvate väikeste segmentide ametlik nimi). Siin tuleb mängu spetsialiseerumine; kõigil puuviljadel ei ole ülemmäärasid, kuid kõigil apelsinidel on see, seega on ülemmäära muutuja reserveerimine oranži klassi jaoks loogiline.

Koorimismeetodi lisamine olemasolevatele söömis- ja mahlameetoditele on samuti loogiline, sest kuigi kõiki puuvilju ei saa koorida, kooritakse apelsine sageli.

Peaksite meeles pidama, et kui me ei kavatse olemasolevaid söömis- ja mahlameetodeid muuta, ei pea me neid apelsinide klassi lisama. Apelsiniklassi meetodid alistavad kõik sarnased meetodid puuviljaklassis. Nii et kui kõik puuviljad oleksid söödud ja mahlad ühtemoodi, poleks meil vaja neid meetodeid apelsiniklassis luua.

Rollikonstruktorid mängivad pärandit

Vaikimisi pärivad vanemklassi konstruktorid alamklassid. Seega, kui luuakse alamklassi objekt, tähendab see, et ka vanemklassi objekt luuakse automaatselt.

Tulles tagasi meie näite juurde, luuakse iga kord, kui luuakse uus oranž objekt, ka puuviljaobjekt, kuna apelsin on puu.

Kulisside taga, kui luuakse alamklassi objekt, kutsutakse esmalt vanemklassi konstruktorit ja seejärel alamklassi konstruktorit. Ülaltoodud oranži alamklassi puhul, kui luuakse oranž objekt ilma parameetriteta, kutsutakse meie vaikeklasside konstruktor, millele järgneb meie oranži klassi töövõtja.

Ülaltoodud esmase konstruktori supermeetod on vajalik, kuna see määrab, et algvilja klassi esmane konstruktor - mitte vaikekonstruktor - tuleks kutsuda alati, kui luuakse parameetritega oranž objekt.

Nüüd saate Java -s kasutada pärandit

Sellest artiklist saite teada, mis on pärand, kuidas see toimib ja miks see on programmeerimisel nii oluline mõiste. Nüüd saate oma pärandussuhteid luua Java programmeerimiskeele abil. Lisaks teate nüüd, kuidas Java ühe pärimisreeglist mööda pääseda, luues vanavanemate suhte.

Pildikrediit: Andreas Wohlfahrt / Pexels

Jaga Jaga Piiksuma E -post Kuidas korraldada oma objektorienteeritud koodi pärimisega

Objektile orienteeritud programmeerimise õigeks saamine tähendab, et peate teadma pärimist ja seda, kuidas see võib kodeerimist lihtsustada ja vigu vähendada.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Java
  • Objektile orienteeritud programmeerimine
Autori kohta Kadeisha Kean(Avaldatud 21 artiklit)

Kadeisha Kean on täispinu tarkvaraarendaja ja tehniline/tehnoloogiline kirjutaja. Tal on selge võime lihtsustada mõnda kõige keerukamat tehnoloogilist kontseptsiooni; materjali tootmine, millest igale tehnoloogia algajale on lihtne aru saada. Ta on kirglik kirjutamise, huvitava tarkvara arendamise ja maailmas reisimise vastu (dokumentaalfilmide kaudu).

Veel Kadeisha Keanilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin