- Charakteristiky dedičstva
- hierarchie
- polymorfizmus
- Druhy dedičstva
- Jedinečné dedičstvo
- Viacúrovňové dedičstvo
- Hierarchické dedičstvo
- Hybridné dedičstvo
- Viacnásobné dedičstvo
- Druhy dedenia zo základnej triedy
- Verejné dedičstvo
- Chránené dedičstvo
- Súkromné dedičstvo
- Príklady
- Príklad Pythonu
- Príklad v C ++
- Referencie
Dedičnosť v objekte - orientovaného programovania je spôsob, ako usporiadať objekty v hierarchii od všeobecného ku konkrétnemu. Je to gadget používaný na rozšírenie triedy na inú triedu, pričom sa zachová analogické vykonanie.
Vo väčšine objektovo orientovaných jazykov založených na triedach získa objekt vytvorený dedičstvom, ktorý sa nazýva podradený objekt, všetky vlastnosti a správanie rodičovského objektu.
Jednoduchý dôkaz dedičnosti pri orientácii na objekt. Zdroj: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain
Preto je to kvalita, ktorá predstavuje vzťah medzi rôznymi triedami. Dedičnosť umožňuje triede mať rovnaké správanie ako iná trieda a rozšíriť alebo prispôsobiť toto správanie tak, aby poskytovalo špeciálne opatrenie pre konkrétne potreby.
Dedičnosť môže pomôcť predstavovať objekty, ktoré majú určité rozdiely a určité podobnosti v spôsobe, akým fungujú. Do základnej triedy môžete vložiť všetky funkcie, ktoré majú spoločné objekty, a potom definovať jednu alebo viac podtried pomocou vlastnej vlastnej funkcie.
Charakteristiky dedičstva
Dedičnosť je jednou z kľúčových charakteristík objektovo orientovaného programovania, ktorá sa používa na definovanie novej triedy z existujúcich tried.
To znamená, že nové triedy možno odvodiť z existujúcich základných tried a pridať nové funkcie. Nemusíte písať od nuly. Dedičstvo preto poskytuje spôsob, ako ľahko opätovne použiť existujúci kód.
Ak už máte triedu, ktorá robí takmer všetko, čo chcete, môžete vytvoriť podtriedu, v ktorej je čiastočne potlačené niektoré jej správanie alebo je pridaná nejaká nová funkčnosť.
Odvodená trieda zdedí všetky metódy základnej triedy s výnimkou nasledujúcich:
- Konštruktory, deštruktory a kopírovacie konštrukcie základnej triedy.
- Prevádzkovatelia preťažení zo základnej triedy.
- Funkcie priateľské k základnej triede.
hierarchie
Podobne ako rodokmeň, dedičstvo slúži na vytvorenie hierarchie tried. Je dôležité si uvedomiť, že atribúty určené pre základnú triedu budú automaticky prítomné v odvodenej triede. Metódy pre základnú triedu budú fungovať aj pre deriváty.
Trieda sa považuje za podtriedu triedy, ktorú zdedila. Na druhej strane táto trieda bude vašou nadtriedou. Najobecnejšia trieda sa môže označovať ako základná trieda, pretože je na základe hierarchie.
polymorfizmus
Dedičnosť je v niektorých jazykoch so statickými typmi veľmi populárna, pretože umožňuje programátorovi vyhnúť sa obmedzeniam statického typu.
Objekt, ktorý dedí od iného objektu, sa považuje za podtyp tohto objektu. Príkladom môžu byť objekty „inštruktor“ a „študent“, z ktorých každý dedí „osoba“.
Ak sú inštruktor a študent rovnakého typu osoby, môžete napísať funkciu, ktorá akceptuje typ osoby ako parameter a ktorá pracuje na objektoch inštruktora a študenta, pretože sú obaja dedičia osoby.
Druhy dedičstva
Jedinečné dedičstvo
Keď odvodená trieda zdedí vlastnosti a správanie jednej základnej triedy. To znamená, že jedna trieda sa vzťahuje iba na jednu ďalšiu triedu.
Viacúrovňové dedičstvo
Odkazuje na modul gadget, z ktorého môžete dediť odvodenú triedu, čím sa táto odvodená trieda stane základnou triedou pre novú triedu. Znamená to, že keď sa odvodená trieda vytvorí z inej odvodenej triedy.
Hierarchické dedičstvo
V tomto dedičstve zdedí veľa podtried jednu triedu. To znamená, že sa stane, keď jednu základnú triedu zdedí viac ako jedna odvodená trieda.
Hybridné dedičstvo
Je to výsledné dedičstvo, keď sa kombinuje ktorékoľvek z troch predchádzajúcich dedičstiev (jednoduché, hierarchické a viacúrovňové).
Viacnásobné dedičstvo
Zodpovedá číslu dedičnosti, keď trieda zdedí viac ako jednu nadtriedu. Nevýhodou tohto typu dedičstva je to, že odvodená trieda bude musieť zvládnuť závislosť, ktorú má na dvoch základných triedach.
Na druhej strane tento typ dedičnosti umožňuje programátorom vytvárať triedy, ktoré kombinujú aspekty viacerých tried a ich zodpovedajúce hierarchie.
Druhy dedenia zo základnej triedy
Verejné dedičstvo
Ak je trieda odvodená od verejnej základnej triedy, verejní členovia základnej triedy sa stanú verejnými členmi odvodenej triedy a chránení členovia základnej triedy sa stanú chránenými členmi odvodenej triedy.
Súkromní členovia nadtriedy nebudú nikdy prístupní priamo z odvodenej triedy, ale môžu k nim byť pristupovaní prostredníctvom hovorov určených pre verejnosť a chránených členov základnej triedy.
Chránené dedičstvo
Keď sa vytvorí trieda, ktorá zdedí po chránenej nadtriede, verejní aj chránení členovia tejto nadtriedy sa stanú chránenými členmi odvodenej triedy.
Súkromné dedičstvo
Ak je podtrieda vytvorená zo súkromnej nadtriedy, verejní a chránení členovia tejto nadtriedy sa stanú súkromnými členmi podtriedy.
Príklady
Príklad Pythonu
Aby sme ukázali, ako funguje princíp dedičnosti, vezmeme robotov alebo lepšiu triedu robotov v programovacom jazyku Python. Za týmto účelom bude špecifikovaná trieda s názvom RobotMédico (PhysicianRobot), ktorá je odvodená od nadtriedy Robot.
Ak sa pozriete na kód triedy RobotMédico, môžete vidieť, že v tejto triede nie je definovaný žiadny atribút alebo metóda.
Pretože trieda RobotMedico je podtriedou Robota, v tomto prípade dedí metódy __init__ a say_hi. Zdedenie týchto metód znamená, že sa môžu použiť, akoby boli definované v triede RobotMédico.
Keď sa vytvorí inštancia RobotMedico, funkcia __init__ vytvorí tiež atribút názvu. Metóda say_hi sa dá použiť na objekt „y“ RobotMédico, ako je vidieť z výsledku predchádzajúceho kódu.
Príklad v C ++
Trieda môže zdediť viac ako jednu triedu, čo znamená, že môže zdediť údaje a funkcie z viacerých nadtried. Na definovanie odvodenej triedy použite zoznam derivácií triedy na určenie základných tried.
Zoznam odvodených tried v C ++ pomenúva jednu alebo viac základných tried a má nasledujúcu podobu: class deriv-class: access-specifier base-class, kde access-specifier je verejný, chránený alebo súkromný a základná trieda je názov predtým definovanej triedy. Ak sa špecifikátor prístupu nepoužíva, predvolene sa použije súkromný.
Nadtriedu „Tvar“ a jej odvodenú triedu „Obdĺžnik“ možno považovať za nasledujúcu:
Po skompilovaní a spustení vyššie uvedeného kódu nastane nasledujúci výstup: "Celková plocha: 35".
Referencie
- Dave Braunschweig (2020). Dedičstvo a polymorfizmus. Komunita Rebus. Prevzaté z: press.rebus.community.
- Kurz Python (2020). Dedičnosť. Prevzaté z: python-course.eu.
- Data Mentor (2020). R Dedičnosť. Prevzaté z: datamentor.io.
- Výukový program (2020). Dedičstvo C ++. Prevzaté z: tutorialspoint.com.
- Net-information (2020). Rôzne typy dedičstva. Prevzaté z: net-informations.com.