Vysvětlení dědičnosti a polymorfismu v programovacím jazyce Java včetně bohatých příkladů. Článek se nevyhýbá ani některým propastem tématiky, jako je volání pretížených metod, případně vysvětlení problematiky volání přetížitelné metody v konstruktoru.
Java pro začátečníky (12) – Dědičnost a polymorfismus
Tento díl bude zasvěcen dědičnosti a polymorfismu, což jsou jedny ze základních kamenů objektově orientovaného programování. Dědičnost nám umožní vytvářet podtypy jednotlivých tříd, zatímco pomocí polymorfismu dosáhneme volání vždy toho správného objektu.
Jak již bylo řečeno v úvodu článku, dědičnost nám umožňuje vytvářet hierarchie tříd, ve kterých můžeme o libovolném uzlu říct, že je speciálním případem libovolného ze svých předků. V reálném světě bychom řekli, že člověk je typem savce, auto je dopravním prostředkem, případně že voda je druhem nápoje.
Z druhé strany si ale řekněme, co je špatně použitou dědičností. Nikdy nemůžeme dědit letadlo od racka z důvodu, že má také křídla. Také nemůžeme dědit židli od člověka z titulu, že má člověk má dvě nohy, židle ctyři, tudíž stačí v podtypu dvě nohy přidat a vše bude v pořádku.
S dědičností jsme se již setkali, aniž bychom o tom věděli. Říkali jsme si, že každá třída má určité metody, které jsou již definovány. Jmenovitě jsme si zmiňovali metody equals a hashCode pro porovnávání objektů a metodu finalize, která je zavolána jako poslední pomazání garbage collectorem před likvidací objektu. Tyto metody naše objekty implicitně zdědily z třídy java.lang.Object (dokumentace).
Zdroj: Algoritmy.net