Co je dědičnost, nadtřída a podtřída v Javě?

Důležitým konceptem v objektově orientovaném programování je dědičnost. Poskytuje to způsob objekty definovat vzájemné vztahy. Jak název napovídá, objekt je schopen zdědit vlastnosti od jiného objektu.

Konkrétněji řečeno, objekt je schopen předat svůj stav a chování svým dětem. Aby dědictví fungovalo, musí mít objekty společné vlastnosti.

v Jáva, mohou být třídy převzaty z jiných tříd, které mohou být převzaty od ostatních atd. Je to proto, že mohou zdědit funkce od třídy nad ní až po nejvyšší třídu Object.

Příklad dědičnosti Java

Řekněme, že vytvoříme třídu nazvanou Člověk, která představuje naše fyzikální vlastnosti. Je to generická třída, která vás může reprezentovat vás, mě nebo kohokoli na světě. Jeho stav sleduje věci, jako je počet nohou, počet paží a krevní skupina. Má chování jako je jíst, spát a chodit.

Člověk je dobrý pro získání celkového pocitu toho, co nás činí stejnými, ale nemůže mi například říct o genderových rozdílech. K tomu bychom potřebovali vytvořit dva nové typy tříd nazvané Man and Woman. Stav a chování těchto dvou tříd se od sebe budou lišit mnoha způsoby, s výjimkou těch, které zdědí od člověka.

instagram viewer

Dědičnost nám proto umožňuje zahrnout stav a chování rodičovské třídy do svého dítěte. Podřízená třída pak může rozšířit stav a chování tak, aby odrážely rozdíly, které představuje. Nejdůležitějším aspektem tohoto konceptu je zapamatovat si, že třída pro děti je specializovanější verzí rodičů.

Co je Superclass?

Ve vztahu mezi dvěma objekty je nadtřída jméno dané třídě, která je zděděna. Zní to jako super duperitní třída, ale pamatujte, že se jedná o obecnější verzi. Lepší jména pro použití mohou být základní třída nebo jednoduše nadřazená třída.

Pro tentokrát příklad reálnějšího světa bychom mohli mít nadřazenou třídu s názvem Osoba. Jeho stav obsahuje jméno, adresu, výšku a hmotnost osoby a má chování, jako je nakupování, výroba postele a sledování televize.

Mohli bychom vytvořit dvě nové třídy, které dědí od osoby zvané Student and Worker. Jsou to specializovanější verze, protože ačkoli mají jména, adresy, sledují televizi a nakupují, mají také vlastnosti, které se od sebe liší.

Pracovník by mohl mít stát, který má pracovní zařazení a místo zaměstnání, zatímco student může mít údaje o studijní oblasti a instituci učení.

Příklad Superclass:

Představte si, že definujete třídu Person:

osoba veřejné třídy. { }

Rozšířením této třídy lze vytvořit novou třídu:

veřejná třída Zaměstnanec rozšiřuje osobu. { }

Třída Person je považována za nadřazenou třídu Employee.

Co je podtřída?

Ve vztahu mezi dvěma objekty je podtřída jméno dané třídě, která dědí z nadřazené třídy. Ačkoli to zní trochu fádně, pamatujte, že se jedná o specializovanější verzi nadřazené třídy.

V předchozím příkladu jsou podtřídami Student a Worker.

Podtřídy lze také označovat jako odvozené třídy, podřízené třídy nebo rozšířené třídy.

Kolik podtříd mohu mít?

Můžete mít tolik podtříd, kolik chcete. Kolik podtříd může mít nadtřída. Stejně tak neexistuje omezení počtu úrovní dědičnosti. Hierarchie tříd může být postavena na určité oblasti společného.

Ve skutečnosti, když se podíváte na knihovny Java API, uvidíte mnoho příkladů dědičnosti. Každá třída v API je zděděna od třídy s názvem java.lang. Objekt. Například kdykoli použijete objekt JFrame, jste na konci dlouhé řady dědičnosti:

 java.lang. Objekt. rozšířeno o java.awt. Komponent. rozšířeno o java.awt. Kontejner. rozšířeno o java.awt. Okno. rozšířeno o java.awt. Rám. rozšířeno javax.swing. JFrame. 

V Javě, když podtřída zdědí od nadřazené třídy, je známá jako „rozšiřování“ nadřazené třídy.

Může moje podtřída zdědit mnoho nadřízených?

Ne. V Javě může podtřída rozšířit pouze jednu nadřazenou třídu.

Proč používat dědičnost?

Dědičnost umožňuje programátorům znovu použít kód, který již napsali. V příkladu Human class nemusíme vytvářet nová pole ve třídě Man and Woman, abychom udrželi krevní skupinu, protože můžeme použít pole zděděné z třídy Human.

Další výhodou použití dědičnosti je to, že nám umožňuje zacházet s podtřídou, jako by to byla nadtřída. Řekněme například, že program vytvořil více instancí objektů Man a Woman. Program bude možná muset vyvolat spánek pro všechny tyto objekty. Protože spánkové chování je chování lidské nadtřídy, můžeme seskupit všechny objekty Man a Woman dohromady a zacházet s nimi, jako by to byly lidské objekty.