Dedenie je jedným zo základných pojmov objektovo orientovaného programovania. V programovaní slovo dedičstvo predstavuje vzťah, v ktorom podradená trieda predpokladá stav a správanie nadradenej triedy.
Účelom dedičstva pri vývoji softvéru je uľahčiť opätovné použitie bezpečného a spoľahlivého softvéru. Jednou z hlavných výhod používania dedičnosti je to, že vo vašich programoch eliminuje nadbytočný kód.
Ako funguje dedičstvo
Za dedičstvom stojí myšlienka, že mnoho tried alebo objektov má niektoré rovnaké súbory atribútov a metód. Preto v duchu výroby spoľahlivého softvéru môžu nové triedy teraz čerpať z už existujúcich príbuzných tried a v prípade potreby rozšíriť existujúce stavy a správanie.
Skutočným príkladom fungovania dedičstva by bolo zváženie ovocia. Toto je široká značka, ktorá slúži na zapuzdrenie škály rôznych položiek.
Jablko je ovocie a rovnako aj pomaranč. Pomaranč však nie je jablko, takže ak by ste vlastnili obchod, nemali by ste ovocie ako jednu zo svojich skladových položiek. Možno by ste vo svojom inventári mohli mať časť s ovocím a pod touto časťou by ste mali konkrétnejšie položky, ako sú jablká a pomaranče.
Takto funguje dedičstvo.
Používanie dedenia v Jave
Dedenie možno použiť v ľubovoľnom programovacom jazyku, ktorý používa objektovo orientovaná paradigma. Presný spôsob, akým sa dedičstvo používa, však závisí od konkrétneho programovacieho jazyka.
Napríklad, C ++ je tiež objektovo orientovaný programovací jazyk. C ++ podporuje tzv. Viacnásobné dedičstvo, zatiaľ čo Java podporuje iba jedno dedičstvo.
To znamená, že v Jave môže mať nadradená trieda veľa podradených tried, ale každá podradená trieda môže mať iba jednu nadradenú triedu (jedno dedičstvo). Existuje však spôsob, ako dosiahnuť nepriame viacnásobné dedičstvo v Jave, a to vytvorením vzťahu medzi starými rodičmi, rodičmi a deťmi.
Vytváranie nadradenej triedy v prostredí Java
Proces výberu nadradenej triedy z dokumentu požiadaviek na softvér je známy ako objektovo-orientovaná analýza. Počas tohto procesu sa fráza „je a“ často používa na identifikáciu možných dedičských vzťahov. Na základe vyššie uvedeného príkladu by ste mali vidieť, že ovocie bude našou rodičovskou triedou.
Príklad triedy rodiča s ovocím
verejná trieda Ovocie {
// Deklarácia premennej
chránené semeno struny;
chránená šnúrka skinColor;
chránená strunová chuť;
// Predvolený konštruktor
public Fruit () {
seed = "";
skinColor = "";
chuť = "";
}
// Primárny konštruktor
verejné ovocie (semeno reťazca, farba šupky, chuť šnúry) {
this.seed = semeno;
this.skinColor = skinColor;
this.taste = chuť;
}
// getre a setre
public String getSeed () {
spätné osivo;
}
public void setSeed (semeno reťazca) {
this.seed = semeno;
}
public String getSkinColor () {
vrátiť skinColor;
}
public void setSkinColor (String skinColor) {
this.skinColor = skinColor;
}
public String getTaste () {
vrátiť chuť;
}
public void setTaste (chuť reťazca) {
this.taste = chuť;
}
// spôsob stravovania
public void eat () {
// všeobecný kód o tom, ako jesť ovocie
}
// metóda džúsu
public void juice () {
// všeobecný kód o tom, ako odšťaviť ovocie
}
}
Jedným z najvýznamnejších aspektov nadradenej triedy vyššie je modifikátor prístupu, ktorý sa používa s každou deklaráciou premennej. „Chránený“ modifikátor prístupu je ideálny na použitie v rodičovských triedach, pretože bráni triedam, ktoré nie sú deťmi, získať prístup k atribútom údajov nadradenej triedy.
Ďalej v kóde sa zoznámite s konštruktormi, getrami a nastavovačmi, ktoré sú všeobecnými stavebnými kameňmi pre každú triedu Java. Na záver sa zoznámime s dvoma metódami (džús a jedlo), ktoré sa vytvárajú v rodičovskej triede nášho programu, pretože sú univerzálne pre všetky druhy ovocia - všetky druhy ovocia sa môžu konzumovať a odšťavovať.
Vytváranie podradených tried v Jave
Podradené triedy sa zvyčajne nazývajú špecializované alebo odvodené triedy, pretože dedia stav a správanie po rodičovi a často prispôsobujú tieto atribúty konkrétnejším spôsobom.
Pokračovaním v našom príklade by ste mali vidieť, prečo by oranžová bola vhodnou detskou triedou vyššie uvedenej ovocnej triedy.
Príklad triedy Orange pre deti
verejná trieda Orange rozširuje ovocie {
// deklarácia premennej
súkromné int supremes;
// predvolený konštruktor
public Orange () {
supremes = 0;
}
// primárny konštruktor
public Orange (String seed, String skinColor, String taste, int supremes) {
super (semienko, skinColor, chuť);
this.supremes = supremes;
}
// getre a setre
public int getsupremes () {
návrat vládne;
}
public void setsupremes (int supremes) {
this.supremes = supremes;
}
// spôsob stravovania
public void eat () {
// ako jesť pomaranč
}
// metóda džúsu
public void juice () {
// ako odšťavovať a pomaranč
}
// metóda lúpania
verejná neplatná kôra () {
// ako ošúpať pomaranč
}
}
Existuje rozdiel medzi tým, ako vyzerá bežná deklarácia triedy Java, a tým, čo máme v našom kóde vyššie. Kľúčové slovo „extends“ je to, čo sa v Jave používa na umožnenie dedenia.
V našom príklade vyššie trieda dieťaťa (oranžová) rozširuje triedu rodiča (ovocie). Preto môže byť stav a správanie triedy ovocia teraz prístupné a upravené oranžovou triedou.
Jedinečný atribút, ktorý má naša oranžová trieda, je identifikovaný názvom premennej supremes (čo je oficiálny názov pre malé segmenty nájdené v pomarančoch). Tu vstupuje do hry špecializácia; nie všetky druhy ovocia majú supremes, ale všetky pomaranče áno, takže vyhradenie premennej supremes pre oranžovú triedu je logické.
Pridanie metódy „šupky“ k už existujúcim metódam „jedenia“ a „džúsu“ je tiež logické, pretože aj keď nie všetky ovocie je možné olúpať, pomaranče sa často lúpu.
Mali by ste mať na pamäti, že ak by sme nemali v úmysle zmeniť súčasné metódy „jesť“ a „džús“, nemuseli by sme ich zahrnúť do našej triedy pomarančov. Metódy v oranžovej triede majú prednosť pred všetkými podobnými metódami v ovocnej triede. Keby sa teda všetky druhy ovocia konzumovali a odšťavovali rovnako, nemuseli by sme tieto metódy vytvárať v oranžovej triede.
Konštruktéri rolí hrajú v dedičstve
V predvolenom nastavení sa konštruktory nadradenej triedy dedia podradenými triedami. Preto ak je vytvorený objekt podradenej triedy, znamená to, že objekt nadradenej triedy je tiež vytvorený automaticky.
Vráťme sa k nášmu príkladu, zakaždým, keď sa vytvorí nový oranžový objekt, vytvorí sa aj ovocný objekt, pretože oranžový je ovocie.
V zákulisí, keď sa vytvorí objekt podradenej triedy, najskôr sa zavolá konštruktor nadradenej triedy a potom konštruktor podradenej triedy. V našej oranžovej podradenej triede vyššie, ak je oranžový objekt vytvorený bez akýchkoľvek parametrov, zavolá sa náš predvolený konštruktor ovocnej triedy, za ktorým bude nasledovať náš predvolený dodávateľ oranžovej triedy.
„Super“ metóda v našom primárnom konštruktore vyššie je nevyhnutná, pretože určuje, že primárny konštruktor - a nie je predvolený konštruktor - triedy rodičovského ovocia by sa malo volať vždy, keď je oranžový objekt s parametrami vytvorené.
Teraz môžete použiť dedenie v Jave
Z tohto článku ste sa mohli dozvedieť, čo je dedičstvo, ako to funguje a prečo je to taký dôležitý koncept v programovaní. Teraz môžete vytvoriť svoje dedičské vzťahy pomocou programovacieho jazyka Java. Ďalej už viete, ako obísť jediné pravidlo dedenia v Jave vytvorením vzťahu medzi starými rodičmi.
Uznanie za obrázok: Andreas Wohlfahrt /Pexels
Správne objektovo orientované programovanie znamená, že potrebujete vedieť o dedičnosti a o tom, ako môže zjednodušiť kódovanie a znížiť počet chýb.
Prečítajte si Ďalej
- Programovanie
- Java
- Objektovo orientované programovanie
Kadeisha Kean je softwarová vývojárka a autorka technických / technologických noviniek. Má výraznú schopnosť zjednodušovať niektoré z najkomplexnejších technologických konceptov; výroba materiálu, ktorý ľahko pochopí každý technologický nováčik. Venuje sa písaniu, vývoju zaujímavého softvéru a cestovaniu po svete (prostredníctvom dokumentárnych filmov).
Prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!
Ešte jeden krok…!
V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.