Dědičnost v programovacích charakteristikách, typech, příkladech

1163
Philip Kelley
Dědičnost v programovacích charakteristikách, typech, příkladech

The dědičnost v programování objektově orientovaný je způsob organizace objektů v hierarchii od nejobecnější po nejkonkrétnější. Jedná se o gadget používaný k rozšíření třídy do jiné třídy při zachování analogického provedení.

Ve většině objektově orientovaných jazyků založených na třídách získává objekt vytvořený prostřednictvím dědičnosti, nazývaný podřízený objekt, všechny vlastnosti a chování nadřazeného objektu..

Jednoduchý důkaz dědičnosti v orientaci objektu. Zdroj: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain

Jedná se tedy o kvalitu, 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 upravit toto chování tak, aby poskytovalo speciální akci pro konkrétní potřeby.

Dědičnost může pomoci představovat objekty, které mají určité rozdíly a některé podobnosti ve způsobu, jakým fungují. Všechny základní funkce, které mají objekty společné, můžete umístit do základní třídy a poté definovat jednu nebo více podtříd s vlastní vlastní funkcí.

Rejstřík článků

  • 1 Charakteristiky dědičnosti
    • 1.1 Hierarchie
    • 1.2 Polymorfismus
  • 2 Druhy dědictví
    • 2.1 Jedinečné dědictví
    • 2.2 Víceúrovňové dědictví
    • 2.3 Hierarchické dědictví
    • 2.4 Hybridní dědičnost
    • 2.5 Vícenásobné dědictví
    • 2.6 Typy dědičnosti ze základní třídy
  • 3 příklady
    • 3.1 Příklad v Pythonu
    • 3.2 Příklad v C++
  • 4 Odkazy

Charakteristiky dědictví

Dědičnost je jednou z klíčových funkcí objektově orientovaného programování, která se používá k definování nové třídy z existujících tříd.

To znamená, že nové třídy lze odvodit z existujících základních tříd a přidávat 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, která částečně přepíše část jejího chování, nebo je možná přidána nějaká nová funkce..

Odvozená třída dědí všechny metody základní třídy, s výjimkou následujících:

- Konstruktory, destruktory a konstruktory kopírování základní třídy.

- Přetížené operátory základní třídy.

- Funkce podporující základní třídu.

Hierarchie

Stejně jako rodokmen slouží dědičnost k vytvoření hierarchie tříd. Je důležité si uvědomit, že atributy určené pro základní třídu budou automaticky přítomny v odvozené třídě. Metody pro základní třídu budou fungovat i pro deriváty.

O třídě se říká, že je podtřídou třídy, ze které dědí. Na druhou stranu bude tato třída vaší nadtřídou. Nejobecnější třídu lze označit jako základní třídu, protože je na základně hierarchie.

Polymorfismus

Dědičnost je v některých jazycích u statických typů velmi oblíbená, protože umožňuje programátorovi vyhnout se některým omezením statického typu.

Objekt, který dědí z jiného objektu, je považován za podtyp tohoto objektu. Příkladem mohou být objekty „instruktor“ a „student“, z nichž každý dědí po „osobě“.

Pokud jsou instruktor a student stejného typu osoby, můžete napsat funkci, která přijímá typ osoby jako parametr a která funguje na objektech instruktora a studenta, protože oba jsou dědici osoby.

Druhy dědictví

Jedinečné dědictví

Když odvozená třída zdědí vlastnosti a chování jedné základní třídy. To znamená, že jedna třída se rozšiřuje na další jednu třídu.

Víceúrovňové dědictví

Odkazuje na gadget, kde můžete zdědit z odvozené třídy, čímž se tato odvozená třída stane základní třídou pro novou třídu. To znamená, že je výsledkem vytvoření odvozené třídy z jiné odvozené třídy.

Hierarchické dědictví

V této dědičnosti dědí mnoho podtříd z jedné třídy. To znamená, že se stane, když jednu základní třídu zdědí více než jedna odvozená třída.

Hybridní dědičnost

Jedná se o výslednou dědičnost, když se spojí některá ze tří předchozích dědičností (jednoduchá, hierarchická a víceúrovňová).

Vícenásobné dědictví

Odpovídá číslu dědičnosti, když třída dědí z více než jedné nadtřídy. Nevýhodou tohoto typu dědičnosti je, že odvozená třída se bude muset vypořádat se závislostí, kterou má na dvou základních třídách.

Na druhou stranu tento typ dědičnosti umožňuje programátorům postavit třídy, které kombinují aspekty více tříd a jejich odpovídající hierarchie..

Typy dědičnosti ze základní třídy

Veřejné dědictví

Když je třída odvozena z veřejné základní třídy, stanou se veřejnými členy základní třídy veřejnými členy odvozené třídy a chráněnými členy základní třídy se stanou chráněnými členy odvozené třídy.

Soukromí členové nadtřídy nikdy nebudou přístupní přímo z odvozené třídy, ale lze k nim přistupovat prostřednictvím volání veřejným a chráněným členům základní třídy..

Chráněné dědictví

Při vytváření třídy, která dědí z chráněné nadtřídy, se veřejní i chránění členové této nadtřídy stanou chráněnými členy odvozené třídy.

Soukromé dědictví

Při podtřídě ze soukromé nadtřídy se veřejní a chránění členové této nadtřídy stanou soukromými členy podtřídy.

Příklady

Příklad Pythonu

Abychom ukázali, jak funguje princip dědičnosti, vezmeme si roboty nebo lepší třídu robotů v programovacím jazyce Python. K tomu třída s názvem RobotMédico (Lékař Robot), který je odvozen od robotické nadtřídy.

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 ani metoda.

Protože třída RobotMedico je podtřídou Robot, dědí v tomto případě metody __init__ i say_hi. Zdědění těchto metod znamená, že je lze použít, jako kdyby byly definovány ve třídě RobotMédico..

Když je vytvořena instance RobotMédico, funkce __init__ také vytvoří 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 dědit z více než jedné třídy, což znamená, že může zdědit data a funkce z více nadtříd. K definování odvozené třídy se k určení základních tříd používá seznam odvození třídy.

Seznam odvození tříd v C ++ pojmenovává jednu nebo více základních tříd a má následující formu: třída odvozená třída: specifikátor přístupu základní třída, ve kterém specifikátor přístupu to je veřejnost, chráněný nebo soukromé, Y základní třída je název dříve definované třídy. Pokud se nepoužívá specifikátor přístupu, Je vzat soukromé výchozí.

Nadtřídu „Shape“ a její odvozenou třídu „Rectangle“ si můžete představit takto:

Po kompilaci a spuštění výše uvedeného kódu dojde k následujícímu výstupu: „Celková plocha: 35“.

Reference

  1. Dave Braunschweig (2020). Dědičnost a polymorfismus. Komunita Rebus. Převzato z: press.rebus.community.
  2. Kurz Python (2020). Dědictví. Převzato z: python-course.eu.
  3. Data Mentor (2020). R Dědičnost. Převzato z: datamentor.io.
  4. Tutorials Point (2020). Dědičnost v C ++. Převzato z: tutorialspoint.com.
  5. Síťové informace (2020). Různé typy dědičnosti. Převzato z: net-informations.com.

Zatím žádné komentáře