Klíčový rozdíl – Polymorfismus vs. dědičnost v OOP
Object-Oriented Programming (OOP) se běžně používá k vývoji softwaru. Mnoho programovacích jazyků podporuje objektově orientované programování. Objektově orientované programování je metodologie navrhování programu pomocí tříd a objektů. Třída v OOP je plán pro vytvoření objektu. Třída má vlastnosti a metody. Objekt je instancí třídy. OOP obsahuje čtyři pilíře, jako je dědičnost, polymorfismus, abstrakce a zapouzdření. Tento článek pojednává o rozdílu mezi polymorfismem a dědičností v OOP. Klíčový rozdíl mezi polymorfismem a dědičností v OOP je ten, že polymorfismus je schopnost objektu chovat se více způsoby a dědičnost je vytvořit novou třídu pomocí vlastností a metod existující třídy.
Co je polymorfismus v OOP?
Polymorfismus označuje více forem. Jeden objekt může mít více chování. Polymorfismus lze rozdělit do dvou kategorií. Přetěžují se a přepisují.
Přetížení
Odkaz na níže uvedený program napsaný v Javě.
Obrázek 01: Přetížení
Podle výše uvedeného programu je vytvořen objekt typu A. Při volání obj.sum(); poskytne výstup související s metodou sum(). Při volání obj.sum(2, 3); dá výstup související s sum(int a, int b). Lze pozorovat, že stejný objekt má různé chování v závislosti na situaci. Pokud existuje více metod se stejným názvem, ale s různými parametry, nazývá se to přetížení. Je také známá jako statická vazba nebo polymorfismus doby kompilace.
Overriding
Další typ polymorfismu má přednost. Podívejte se na níže uvedený program napsaný v Javě.
Obrázek 02: Přepsání
Podle výše uvedeného programu existuje metoda display() ve třídě A. Třída B sahá od třídy A. Proto jsou všechny metody ve třídě A přístupné třídou B. Jedná se o dědičnost. Koncept dědičnosti je popsán dále později.
Třída B má také stejnou metodu display(). Při vytváření objektu typu A a volání metody zobrazení bude na výstupu uvedeno B. Metoda zobrazení třídy A je přepsána metodou zobrazení třídy B. Takže výstup je B.
Pokud existují metody se stejným názvem a stejnými parametry, ale ve dvou různých třídách a jsou spojeny s dědičností, nazývá se to přepisování. Je také známá jako pozdní vazba, dynamická vazba, běhový polymorfismus. Přetížení a přepsání se nazývá polymorfismus. Je to hlavní koncept v objektově orientovaném programování.
Co je dědičnost v OOP?
Odkaz na níže uvedený program napsaný v Javě.
Obrázek 03: Příklad dědičnosti
Podle výše uvedeného programu má třída A metodu sum() a třída B metodu sub().
Metodu sum() třídy A lze použít ve třídě B pomocí klíčového slova extend. Opětovné použití vlastností a metod v existující třídě k vytvoření nové třídy se nazývá dědičnost. Dokonce ani ve třídě B není žádná metoda sum(); dědí se z třídy A. Dědičnost je užitečná pro opětovné použití kódu. Starší třída se nazývá základní třída, nadtřída nebo nadřazená třída. Odvozená třída se nazývá podtřída nebo podtřída.
Typy dědičnosti
Existují různé typy dědičnosti. Jsou to jednoúrovňová dědičnost, víceúrovňová dědičnost, vícenásobná dědičnost, hierarchická dědičnost a hybridní dědičnost.
Jednotlivé dědictví
V Single Inheritance existuje jedna supertřída a jedna podtřída. Pokud je třída A nadtřídou a třída B je podtřídou, všechny vlastnosti a metody třídy A jsou přístupné třídě B. Existuje pouze jedna úroveň; proto se nazývá jako jednoúrovňová dědičnost.
Víceúrovňová dědičnost
Ve víceúrovňové dědičnosti existují tři úrovně tříd. Mezitřída dědí ze supertřídy. Podtřída dědí z mezitřídy. Pokud existují tři třídy jako A, B a C a A je supertřída a B je mezitřída. Potom B dědí z A a C dědí z B, jde o víceúrovňovou dědičnost.
Vícenásobné dědictví
Ve vícenásobné dědičnosti existuje mnoho supertříd a jedna podtřída. Pokud existují tři supertřídy zvané A, B, C a D je podtřída, pak třída D může dědit z A, B a C. Vícenásobná dědičnost je podporována v programovacím jazyce C++. Není podporován v programovacích jazycích, jako je Java nebo C. Pro implementaci vícenásobné dědičnosti v těchto jazycích se používají rozhraní.
Hierarchická dědičnost
Pokud existují třídy zvané A jako supertřídy a B, C jsou podtřídy, mohou tyto podtřídy dědit vlastnosti a metody třídy A. Tento typ dědičnosti se nazývá hierarchická dědičnost.
Hybridní dědičnost
Existuje další speciální typ dědičnosti, který je známý jako hybridní dědičnost. Jde o kombinaci víceúrovňového a vícenásobného dědictví. Pokud jsou A, B, C a D třídy a B dědí z A a D dědí z B i C, pak se jedná o hybridní dědičnost.
Jaké jsou podobnosti mezi polymorfismem a dědičností v OOP?
Oba jsou koncepty objektově orientovaného programování
Jaký je rozdíl mezi polymorfismem a dědičností v OOP?
Polymorfismus vs dědičnost v OOP |
|
Polymorfismus je schopnost objektu chovat se více způsoby. | Dědičnost spočívá ve vytvoření nové třídy pomocí vlastností a metod existující třídy. |
Použití | |
Polymorfismus se používá pro objekty k volání jaké formy metod v době kompilace a za běhu. | Pro opětovné použití kódu se používá dědičnost. |
Implementace | |
Polymorfismus je implementován v metodách. | V třídách je implementována dědičnost. |
Kategorie | |
Polymorfismus lze rozdělit na přetěžování a přepisování. | Dědičnost lze rozdělit na jednoúrovňovou, víceúrovňovou, hierarchickou, hybridní a vícenásobnou dědičnost. |
Shrnutí – Polymorfismus vs dědičnost v OOP
Polymorfismus a dědičnost jsou hlavními pojmy v objektově orientovaném programování. Rozdíl mezi polymorfismem a dědičností v OOP spočívá v tom, že polymorfismus je společné rozhraní pro více forem a dědičnost spočívá ve vytvoření nové třídy pomocí vlastností a metod existující třídy. Oba koncepty jsou široce používány ve vývoji softwaru.
Stáhněte si PDF Polymorfismus vs dědičnost v OOP
Můžete si stáhnout PDF verzi tohoto článku a použít ji pro offline účely podle citace. Stáhněte si PDF verzi zde Rozdíl mezi polymorfismem a dědičností v OOP