- Charakteristika dědičnosti
- Hierarchie
- Polymorfismus
- Druhy dědičnosti
- Unikátní dědictví
- Víceúrovňové dědictví
- Hierarchické dědictví
- Hybridní dědičnost
- Vícenásobné dědictví
- Druhy dědičnosti ze základní třídy
- Veřejné dědictví
- Chráněné dědictví
- Soukromé dědictví
- Příklady
- Příklad Pythonu
- Příklad v C ++
- Reference
Dědičnost v objektu - orientovaného programování je způsob, jak uspořádat objekty v hierarchii od obecného ke konkrétnímu. Je to gadget používaný k rozšíření třídy do jiné třídy, zachování analogického provedení.
Ve většině objektově orientovaných jazyků založených na třídách získá objekt vytvořený dědičností zvaný podřízený objekt všechny vlastnosti a chování nadřazeného objektu.
Jednoduchý důkaz dědičnosti v orientaci na objekt. Zdroj: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain
Proto je to kvalita, která představuje vztah mezi různými třídami. Dědičnost umožňuje třídě mít stejné chování jako jiná třída a rozšířit nebo přizpůsobit toto chování tak, aby poskytovalo zvláštní akci pro specifické potřeby.
Dědičnost může pomoci reprezentovat objekty, které mají určité rozdíly a některé podobnosti ve způsobu, jakým fungují. Do základní třídy můžete vložit všechny funkce, které mají společné objekty, a pak definovat jednu nebo více podtříd pomocí vlastní vlastní funkce.
Charakteristika dědičnosti
Dědičnost je jednou z klíčových vlastností objektově orientovaného programování, která se používá k definování nové třídy ze stávajících tříd.
To znamená, že nové třídy lze odvodit z existujících základních tříd a přidat nové funkce. Nemusíte psát od nuly. Dědičnost proto poskytuje způsob, jak snadno znovu použít stávající kód.
Pokud již máte třídu, která dělá téměř vše, co chcete, můžete vytvořit podtřídu, ve které je částečně potlačeno její chování nebo je přidána nová funkce.
Odvozená třída zdědí všechny metody základní třídy, s výjimkou následujících:
- Konstruktory, destruktory a konstruktéři kopií základní třídy.
- Operátoři přetížení ze základní třídy.
- Funkce přátelské pro základní třídu.
Hierarchie
Stejně jako rodokmen, dědičnost slouží k vytvoření hierarchie tříd. Je důležité si uvědomit, že atributy určené pro základní třídu budou v odvozené třídě přítomny automaticky. Metody pro základní třídu budou také fungovat pro deriváty.
Třída se říká, že je podtřídou třídy, kterou zdědila. Na druhou stranu, tato třída bude vaše nadtřída. Nejobecnější třída může být označována jako základní třída, protože je na bázi hierarchie.
Polymorfismus
Dědičnost je v některých jazycích se statickými typy velmi oblíbená, protože umožňuje programátorům vyhnout se některým omezením statického typu.
Objekt, který zdědí od jiného objektu, je považován za podtyp tohoto objektu. Příkladem mohou být objekty „instruktor“ a „student“, z nichž každý zdědí „osoba“.
Pokud jsou instruktor a student stejného typu osoby, můžete napsat funkci, která akceptuje typ osoby jako parametr a která pracuje na objektech instruktora a studenta, protože oba jsou dědicemi osoby.
Druhy dědičnosti
Unikátní dědictví
Když odvozená třída zdědí vlastnosti a chování jedné základní třídy. To znamená, že jedna třída se vztahuje pouze na jednu další třídu.
Víceúrovňové dědictví
Odkazuje na gadget, kde můžete zdědit odvozenou třídu, čímž se z této odvozené třídy stane základní třída pro novou třídu. To znamená, že je výsledkem vytvoření odvozené třídy z jiné odvozené třídy.
Hierarchické dědictví
V tomto dědictví zdědí mnoho podtříd jednu třídu. To znamená, že se stane, když jednu základní třídu zdědí více než jedna odvozená třída.
Hybridní dědičnost
Je to výsledné dědictví, když se kombinuje kterékoli ze tří předchozích dědictví (jednoduché, hierarchické a víceúrovňové).
Vícenásobné dědictví
Odpovídá číslu dědičnosti, když třída zdědí od více než jedné nadřazené třídy. Nevýhodou tohoto typu dědičnosti je, že odvozená třída bude muset zvládnout závislost, kterou má na dvou základních třídách.
Na druhé straně tento typ dědičnosti umožňuje programátorům vytvářet třídy, které kombinují aspekty více tříd a jejich odpovídající hierarchie.
Druhy dědičnosti ze základní třídy
Veřejné dědictví
Když je třída odvozena z veřejné základní třídy, veřejní členové základní třídy se stanou veřejnými členy odvozené třídy a chráněné členy základní třídy se stanou chráněnými členy odvozené třídy.
Soukromí členové nadřazené třídy nebudou nikdy přístupní přímo z odvozené třídy, ale lze k nim přistupovat prostřednictvím volání veřejnosti a chráněných členů základní třídy.
Chráněné dědictví
Když je vytvořena třída, která zdědí od chráněné nadřazené třídy, veřejní i chránění členové této nadřazené třídy se stanou chráněnými členy odvozené třídy.
Soukromé dědictví
Když je podtřída vytvořena ze soukromé nadřazené třídy, veřejní a chránění členové této podtřídy se stanou soukromými členy podtřídy.
Příklady
Příklad Pythonu
Abychom ukázali, jak funguje princip dědičnosti, vezmeme roboty nebo lepší třídu robotů v programovacím jazyce Python. Za tímto účelem bude specifikována třída nazvaná RobotMédico (PhysicianRobot), která je odvozena z nadřazené třídy Robot.
Pokud se podíváte na kód třídy RobotMédico, uvidíte, že v této třídě nebyl definován žádný atribut nebo metoda.
Protože třída RobotMedico je podtřídou Robota, v tomto případě zdědí metody __init__ a say_hi. Zdědění těchto metod znamená, že mohou být použity, jako by byly definovány ve třídě RobotMédico.
Po vytvoření instance RobotMedico vytvoří funkce __init__ také atribut name. Metodu say_hi lze použít na objekt „y“ RobotMédico, jak je vidět na výsledku předchozího kódu.
Příklad v C ++
Třída může zdědit více než jednu třídu, což znamená, že může zdědit data a funkce z více tříd. Chcete-li definovat odvozenou třídu, použijte k odvození základních tříd seznam odvození tříd.
Seznam derivací třídy v C ++ pojmenovává jednu nebo více základních tříd a má následující podobu: class deriv-class: access-specifier base-class, kde access-specifier je veřejný, chráněný nebo soukromý a základní třída je jméno dříve definované třídy. Pokud není použit specifikátor přístupu, bude ve výchozím nastavení převzato soukromé.
Nadtřída „Tvar“ a odvozená třída „Obdélník“ lze považovat za následující:
Při kompilaci a spuštění výše uvedeného kódu dojde k následujícímu výstupu: "Celková plocha: 35".
Reference
- Dave Braunschweig (2020). Dědičnost a polymorfismus. Komunita Rebus. Převzato z: press.rebus.community.
- Kurz Python (2020). Dědictví. Převzato z: python-course.eu.
- Data Mentor (2020). R Dědičnost. Převzato z: datamentor.io.
- Výukový program Point (2020). Dědičnost C ++. Převzato z: tutorialspoint.com.
- Net-information (2020). Různé typy dědičnosti. Převzato z: net-informations.com.