Dôležitým konceptom objektovo orientovaného programovania je dedičstvo. Poskytuje to spôsob objektov definovať vzťahy medzi sebou. Ako už názov napovedá, objekt je schopný zdediť vlastnosti od iného objektu.
Konkrétnejšie povedané, objekt je schopný preniesť svoj stav a správanie na svoje deti. Aby dedičstvo fungovalo, musia mať objekty spoločné vlastnosti.
v Jáva, triedy môžu byť prevzaté z iných tried, ktoré môžu byť prevzaté od ostatných atď. Je to preto, že môžu zdediť funkcie od triedy nad ňou, až po najvyššiu triedu Object.
Príklad dedičstva Java
Povedzme, že vytvoríme triedu s názvom Človek, ktorá predstavuje naše fyzikálne vlastnosti. Je to generická trieda, ktorá vás môže zastupovať, mňa alebo kohokoľvek na svete. Jeho stav sleduje veci, ako je počet nôh, počet rúk a krvný typ. Má správanie ako jesť, spať a chodiť.
Človek je dobrý na to, aby získal celkový pocit toho, čo nás všetkých robí rovnaké, ale napríklad mi nemôže povedať o rodových rozdieloch. Z tohto dôvodu by sme mali vytvoriť dva nové typy triedy s názvom Muž a žena. Stav a správanie týchto dvoch tried sa budú navzájom líšiť mnohými spôsobmi, s výnimkou tých, ktoré zdedia od človeka.
Dedičstvo nám teda umožňuje zahrnúť stav a správanie rodičovskej triedy do svojho dieťaťa. Podriadená trieda potom môže rozšíriť stav a správanie tak, aby odrážali rozdiely, ktoré predstavuje. Najdôležitejším aspektom tohto konceptu je pamätať na to, že trieda dieťaťa je špecializovanejšou verziou rodiča.
Čo je Superclass?
Vo vzťahu medzi dvoma objektmi je nadtrieda názov daný triede, z ktorej sa dedí. Znie to ako super duperitná trieda, pamätajte však, že je to všeobecnejšia verzia. Lepšími použitými názvami môžu byť základné triedy alebo jednoducho rodičovská trieda.
Aby sme tentokrát urobili príklad v reálnom svete, mohli by sme mať nadtriedu s názvom Osoba. Jeho stav obsahuje meno, adresu, výšku a hmotnosť osoby a má správanie, ako je nakupovanie, výroba postele a sledovanie televízie.
Mohli by sme urobiť dve nové triedy, ktoré zdedia od osoby zvanej Študent a pracovník. Sú to špecializovanejšie verzie, pretože aj keď majú mená, adresy, pozerajú televíziu a nakupujú, majú aj vlastnosti, ktoré sa navzájom líšia.
Pracovník by mohol mať štát, ktorý má pracovné miesto a miesto zamestnania, zatiaľ čo študent môže mať údaje o študijnej oblasti a inštitúcii vzdelávania.
Príklad nadtriedy:
Predstavte si, že definujete triedu Person:
verejná trieda Osoba. { }
Rozšírením tejto triedy je možné vytvoriť novú triedu:
verejná trieda Zamestnanec rozširuje osobu. { }
Trieda Person sa považuje za nadtriedu triedy Employee.
Čo je podtrieda?
Vo vzťahu medzi dvoma objektmi je podtriedou názov priradený triede, ktorá dedí nadtriedu. Aj keď to znie trochu fádne, nezabudnite, že ide o špecializovanejšiu verziu nadtriedy.
V predchádzajúcom príklade sú podtriedami Študent a Pracovník.
Podtriedy môžu byť známe aj ako odvodené triedy, podriadené triedy alebo rozšírené triedy.
Koľko podtried môžem mať?
Môžete mať ľubovoľný počet podtried. Počet podtried nie je obmedzený. Podobne nie je obmedzený počet úrovní dedičstva. Hierarchia tried môže byť vybudovaná na určitej oblasti spoločného.
V skutočnosti, ak sa pozriete na knižnice Java API, uvidíte mnoho príkladov dedičnosti. Každá trieda v API je zdedená od triedy s názvom java.lang. Object. Napríklad, kedykoľvek použijete objekt JFrame, ste na konci dlhej línie dedičstva:
java.lang. Object. rozšíril o java.awt. Component. rozšíril o java.awt. Kontajner. rozšíril o java.awt. Okna. rozšíril o java.awt. Rám. rozšíril javax.swing. JFrame.
V Jave, keď podtrieda zdedí od nadtriedy, je známa ako „rozširovanie“ nadtriedy.
Môže moja podtrieda zdediť z mnohých nadriadených?
V Java môže podtrieda rozšíriť iba jednu nadtriedu.
Prečo používať dedičnosť?
Dedičnosť umožňuje programátorom opätovne použiť kód, ktorý už napísali. V príklade Human class nemusíme vytvárať nové polia v triede Man and Woman, aby sme udržali krvný typ, pretože môžeme použiť pole zdedené z ľudskej triedy.
Ďalšou výhodou použitia dedičstva je to, že nám umožňuje zaobchádzať s podtriedou, akoby to bola nadtrieda. Povedzme napríklad, že program vytvoril viacero inštancií objektov Man a Woman. Program pravdepodobne bude musieť volať spánkové správanie všetkých týchto objektov. Pretože spánkové správanie je správaním ľudskej nadtriedy, môžeme zoskupiť všetky objekty Muž a žena a zaobchádzať s nimi, akoby to boli ľudské objekty.