Abstraktní třída vs dědičnost
Abstraktní třída a dědičnost jsou dva důležité objektově orientované koncepty, které se nacházejí v mnoha objektově orientovaných programovacích jazycích, jako je Java. Abstraktní třídu lze považovat za abstraktní verzi běžné (konkrétní) třídy, zatímco dědičnost umožňuje novým třídám rozšiřovat další třídy. Abstraktní třída je třída, kterou nelze inicializovat, ale lze ji rozšířit. Abstraktní třídy jsou tedy smysluplné pouze v případě, že programovací jazyk podporuje dědičnost. V Javě jsou třídy Abstract deklarovány pomocí klíčového slova Abstract, zatímco klíčové slovo Extends se používá pro dědění z (super) třídy.
Co je abstraktní třída?
Abstraktní třídy, známé také jako abstraktní základní třídy (ABC), obvykle nelze vytvořit instanci (nelze vytvořit instanci této třídy). Abstraktní třídy jsou tedy smysluplné pouze v případě, že programovací jazyk podporuje dědičnost (schopnost vytvářet podtřídy z rozšíření třídy). Abstraktní třídy obvykle představují abstraktní koncept nebo entitu s částečnou nebo žádnou implementací. Abstraktní třídy proto fungují jako nadřazené třídy, z nichž jsou odvozeny podřízené třídy, takže podřízená třída bude sdílet neúplné vlastnosti nadřazené třídy a lze přidat funkce, které je doplní.
Abstraktní třídy mohou obsahovat abstraktní metody. Podtřídy rozšiřující abstraktní třídu mohou implementovat tyto (zděděné) abstraktní metody. Pokud podřízená třída implementuje všechny takové abstraktní metody, jedná se o konkrétní třídu. Ale pokud tomu tak není, stane se podřízená třída také abstraktní třídou. To vše znamená, že když programátorka nominuje třídu jako Abstrakt, říká, že třída bude neúplná a bude mít prvky, které je třeba doplnit dědícími podtřídami. Je to pěkný způsob, jak vytvořit smlouvu mezi dvěma programátory, což zjednodušuje úkoly při vývoji softwaru. Programátor, který píše kód ke zdědění, musí přesně dodržovat definice metod (ale samozřejmě může mít vlastní implementaci).
Co je dědičnost?
Dědičnost je objektově orientovaný koncept, který umožňuje novým třídám rozšiřovat další třídy. Klíčové slovo Extends se používá k implementaci konceptu dědičnosti v programovacím jazyce Java. Dědičnost v podstatě zajišťuje opětovné použití kódu tím, že umožňuje rozšíření vlastností a chování existující třídy o nově definovanou třídu. Když nová podtřída (nebo odvozená třída) rozšiřuje nadtřídu (nebo nadřazenou třídu), tato podtřída zdědí všechny atributy a metody nadtřídy. Podtřída může volitelně přepsat chování (poskytnout metodám novou nebo rozšířenou funkčnost) zděděné od nadřazené třídy. Typicky podtřída nemůže rozšířit více supertříd (např. v Javě). Rozšíření proto nelze použít pro vícenásobnou dědičnost. Abyste získali vícenásobnou dědičnost, musíte použít rozhraní.
Jaký je rozdíl mezi abstraktní třídou a dědičností?
Abstraktní třídy obvykle představují abstraktní koncept nebo entitu s částečnou nebo žádnou implementací. Dědičnost umožňuje novým třídám rozšířit další třídy. Protože abstraktní třídy nelze konkretizovat, musíte použít koncept dědičnosti, abyste mohli používat abstraktní třídy. Jinak abstraktní třída nemá žádné využití. Abstraktní třídy mohou obsahovat abstraktní metody a když je třída rozšířena, zdědí se všechny metody (abstraktní i konkrétní). Zděděná třída může implementovat kteroukoli nebo všechny metody. Pokud nejsou implementovány všechny abstraktní metody, stane se tato třída také abstraktní třídou. Třída nemůže dědit z více než jedné abstraktní třídy (toto není kvalita abstraktních tříd jako taková, ale spíše omezení dědičnosti).
Související příspěvky:
Rozdíl mezi abstraktní třídou a konkrétní třídou
Rozdíl mezi virtuálním a abstraktním
Rozdíl mezi abstraktní třídou a rozhraním
Rozdíl mezi Implements a Extends
Rozdíl mezi grafem a stromem
Filed Under: Programming Tagged with: ABC, abstract, Abstract Base Classes, Abstract class, Abstract Class, Abstract keyword, Abstract Methods, Conkrétní třída, Klíčové slovo Extends, Dědičnost, Třída dědičnosti, zděděná třída, Java, vícenásobná dědičnost, objektově orientované koncepty, běžná třída, super třída
O autorovi: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Počítačová věda, je odborným asistentem a má výzkumné zájmy v oblastech bioinformatiky, výpočetní biologie a biomedicínského zpracování přirozeného jazyka.
Komentáře
-
Jason říká
30. srpna 2017 v 13:25
Děkujeme za vysvětlení rozdílu. Všechny mé otázky byly tímto vyřešeny.
Odpovědět
-
Aus říká
10. května 2019 v 15:04
nejlepší odpověď na webu, Učitel nevysvětluje sračky a nedává to smysl, mono tón mf. Takto vysvětlujete pojmy.
Odpovědět
Zanechat odpověď Zrušit odpověď
Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena
Komentář
Jméno
Web