Pärand on üks objektorienteeritud programmeerimise põhimõisteid. Programmeerimisel tähistab sõna pärimine suhet, kus lapseklass võtab endale vanemaklassi seisundi ja käitumise.

Pärimise eesmärk tarkvaraarenduses on hõlbustada turvalise ja usaldusväärse tarkvara taaskasutamist. Pärimise kasutamise üks peamisi eeliseid on see, et see välistab teie programmides üleliigse koodi.

Kuidas pärimine töötab

Pärimise idee on see, et paljudel klassidel või objektidel on ühed ja samad atribuudid ja meetodid. Seetõttu saavad usaldusväärsed tarkvara loomise vaimus nüüd uued klassid kasutada juba olemasolevate seotud klasside põhjal ja vajadusel laiendada olemasolevaid olekuid ja käitumist.

Pärilikkuse toimimise tegelik näide oleks puuviljade kaalumine. See on lai silt, mis on mõeldud mitmesuguste üksuste kapseldamiseks.

Õun on puu ja nii ka apelsin. Kuid apelsin ei ole õun, nii et kui poe omanik oleks, ei oleks teil puuvilju ühe aktsiaartiklina. Võib-olla võiks teie loendis olla puuviljade jaotis ja selle jaotise all oleksid konkreetsemad tooted nagu õunad ja apelsinid.

instagram viewer

Nii pärimine käib.

Pärandi kasutamine Java-s

Pärandit saab kasutada igas programmeerimiskeeles, mis kasutab seda objektorienteeritud programmeerimise paradigma. Pärandi kasutamise täpne viis sõltub aga konkreetsest programmeerimiskeelest.

Näiteks, C ++ on ka objektorienteeritud programmeerimiskeel. C ++ toetab nn mitmendat pärimist, samal ajal kui Java toetab ainult ühte pärimist.

See tähendab, et Java-s võib vanemateklassis olla palju lapseklasse, kuid igas lasteklassis võib olla ainult ühe vanema klass (üksik pärand). Siiski on olemas viis kaudse mitmekordse pärimise saavutamiseks Java-s, luues vanavanema, vanema ja lapse suhte.

Vanemklassi loomine Java-s

Vanemklassi valimine protsessinõuete dokumendist on tuntud kui objektorienteeritud analüüs. Selle protsessi käigus kasutatakse võimalike pärimissuhete kindlakstegemiseks fraasi „on a”. Meie ülaltoodud näite põhjal peaksite nägema, et puuvili oleks meie vanemateklass.

Puuvilja vanemate klassi näide


avalik klass Puu {
// Muutuv deklaratsioon
kaitstud Stringi seeme;
kaitstud String skinColor;
kaitstud Stringi maitse;
// Vaikekonstruktor
avalik puu () {
seeme = "";
skinColor = "";
maitse = "";
}
// Esmane konstruktor
avalik puuvili (nööri seeme, nööri nahavärv, nööri maitse) {
see.seeme = seeme;
see.nahavärv = nahavärv;
see.maitse = maitse;
}
// getters ja setters
avalik string getSeed () {
tagasi seemne;
}
public void setSeed (Stringi seeme) {
see.seeme = seeme;
}
avalik string getSkinColor () {
tagastama skinColor;
}
public void setSkinColor (String skinColor) {
see.nahavärv = nahavärv;
}
avalik string getTaste () {
tagasimaitse;
}
public void setTaste (Stringi maitse) {
see.maitse = maitse;
}
// söömise meetod
avalik tühine sööma () {
// puuvilja söömise üldkood
}
// mahla meetod
avalik tühimahl () {
// puuvilja mahla mahutamise üldkood
}
}

Üks ülaltoodud vanemklassi tähelepanuväärsemaid aspekte on juurdepääsu muutuja, mida kasutatakse iga muutuja deklaratsiooniga. "Kaitstud" juurdepääsu modifikaator on ideaalne kasutamiseks vanemateklassides, kuna see takistab mitte-lasteklassidel juurdepääsu vanemateklassi andmeatribuutidele.

Koodis allpool tutvustatakse konstruktoreid, gettereid ja seadistajaid, mis on mis tahes Java-klassi üldised ehituskivid. Lõpuks tutvustatakse teile kahte meetodit (mahl ja söömine), mis on loodud meie programmi vanemateklassis, kuna need on universaalsed kõigile puuviljadele - kõiki puuvilju saab süüa ja mahlastada.

Lasteklasside loomine Java-s

Lapseklasse nimetatakse tavaliselt spetsiaalseteks või tuletatud klassideks, kuna need pärivad vanemalt oleku ja käitumise ning kohandavad neid atribuute sageli konkreetsemaks.

Meie näite jätkamisel peaksite saama aru, miks oleks apelsin ülaltoodud puuviljaklassi sobiv lasteklass.

Oranži lapse klassi näide


avalik klass Orange laiendab puuvilju {
// muutuja deklaratsioon
private int supremes;
// vaikekonstruktor
avalik oranž () {
ülimad = 0;
}
// esmane konstruktor
avalik apelsin (nööriseeme, stringi nahavärv, paelamaitse, kõrgeimad) {
super (seeme, nahavärv, maitse);
see.ülemad = ülimad;
}
// getters ja setters
public int getsupremes () {
tagastama ülimad;
}
public void setsupremes (int supremes) {
see.ülemad = ülimad;
}
// söömise meetod
avalik tühine sööma () {
// kuidas apelsini süüa
}
// mahla meetod
avalik tühimahl () {
// kuidas mahla ja apelsini
}
// koorimismeetod
public void peel () {
// kuidas koorida apelsini
}
}

Tavalise Java-klassi deklaratsiooni väljanägemisel ja sellel, mis meil ülal on, on erinevus. Märksõna “laiendab” on see, mida Java-s kasutatakse pärimise võimaldamiseks.

Meie näites laiendab lapseklass (oranž) vanemat klassi (puuvili). Seetõttu saab apelsiniklass nüüd juurde pääseda puuviljaklassi olekule ja käitumisele.

Meie oranži klassi ainulaadne atribuut on identifitseeritud muutuja nime ülimatega (mis on apelsinides leiduvate väikeste segmentide ametlik nimi). Siin tuleb mängu spetsialiseerumine; kõigil puuviljadel pole ülimat, kuid kõigil apelsinidel, nii et ülimuutuja reserveerimine oranži klassi jaoks on loogiline.

„Koorimise“ meetodi lisamine olemasolevatele „sööma“ ja „mahl“ meetoditele on samuti loogiline, sest kuigi kõiki puuvilju ei saa koorida, kooritakse apelsinid sageli.

Peaksite meeles pidama, et kui me ei kavatse olemasolevaid „süüa“ ja „mahl“ meetodeid muuta, ei pea me neid oma apelsini klassi lisama. Apelsiniklassi meetodid asendavad mis tahes sarnast meetodit puuviljaklassis. Nii et kui kõiki puuvilju söödaks ja mahlast saaks ühtemoodi, ei oleks meil vaja oranžide klassis neid meetodeid luua.

Rollikonstruktorid mängivad pärandit

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

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

Lavatagusel ajal nimetatakse lapseklassi objekti loomisel esmalt vanemklassi konstruktorit, kellele järgneb lasteklassi konstruktor. Kui ülaltoodud oranžis lapseklassis luuakse oranž objekt ilma parameetriteta, kutsutakse meie puuviljaklassi vaikekonstruktorit, kellele järgneb meie oranži klassi vaikehankija.

Ülaltoodud peamise konstruktori supermeetod on vajalik, kuna see täpsustab, et esmane konstruktor - ja mitte vaikekonstruktor - puuvilja-põhiklassi tuleks kutsuda alati, kui parameetritega oranž objekt on loodud.

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

Sellest artiklist saite teada, mis on pärimine, kuidas see toimib ja miks see on programmeerimisel nii oluline mõiste. Nüüd saate Java-programmeerimiskeele abil luua oma pärimissuhted. Lisaks teate nüüd, kuidas vanavanemate suhet luues saate mööda Java ühtsest pärimisreeglist.

Pildikrediit: Andreas Wohlfahrt /Pexels

E-post
Kuidas korraldada oma objektorienteeritud kood pärandiga

Objektipõhise programmeerimise õigeks saamine tähendab, et peate teadma pärandist ja sellest, kuidas see saab kodeerimist lihtsustada ja vigu vähendada.

Loe edasi

Seotud teemad
  • Programmeerimine
  • Java
  • Objektorienteeritud programmeerimine
Autori kohta
Kadeisha Kean (3 artiklit on avaldatud)

Kadeisha Kean on täismahus tarkvaraarendaja ja tehnikakirjutaja. Tal on selge võime lihtsustada mõnda kõige keerukamat tehnoloogilist kontseptsiooni; materjali tootmine, mis on hõlpsasti mõistetav igale tehnoloogia algajale. Ta on kirglik kirjutamise, huvitava tarkvara väljatöötamise ja maailmas ringi liikumise üle (dokumentaalfilmide kaudu).

Veel Kadeisha Keanilt

Telli meie uudiskiri

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

Veel üks samm !!!

Palun kinnitage oma e-posti aadress meilis, mille me just saatsime.

.