Rozdíl Mezi Abstraktní Třídou A Dědičností

Rozdíl Mezi Abstraktní Třídou A Dědičností
Rozdíl Mezi Abstraktní Třídou A Dědičností

Video: Rozdíl Mezi Abstraktní Třídou A Dědičností

Video: Rozdíl Mezi Abstraktní Třídou A Dědičností
Video: PRM Okruh 10 PRINCIPY OOP (DĚDIČNOST, ROZHRANÍ, ABSTRAKTNÍ TŘÍDA) - Karel Johanovský SŠPTAJI 2024, Duben
Anonim

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 Inheritance umožňuje novým třídám rozšířit další třídy. Abstraktní třída je třída, kterou nelze inicializovat, ale lze ji rozšířit. Takže abstraktní třídy mají smysl, pouze pokud 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á k dědění z (super) třídy.

Co je abstraktní třída?

Typicky nelze vytvořit abstraktní třídy, známé také jako Abstraktní základní třídy (ABC) (nelze vytvořit instanci této třídy). Takže abstraktní třídy mají smysl pouze tehdy, pokud 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í. Proto abstraktní třídy fungují jako nadřazené třídy, ze kterých jsou odvozeny podřízené třídy, takže podřízená třída bude sdílet neúplné funkce nadřazené třídy a lze je přidat k jejich dokončení.

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. Pokud tomu tak není, stane se podřízená třída také třídou Abstract. To vše znamená, že když programátor nominuje třídu jako abstrakt, říká, že třída bude neúplná a bude obsahovat prvky, které je třeba doplnit zděděnými podtřídami. To je pěkný způsob, jak vytvořit smlouvu mezi dvěma programátory, což zjednodušuje úkoly při vývoji softwaru. Programátorka, která kód zdědí, musí přesně dodržovat definice metody (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šířit 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ě poskytuje 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 nadřazenou třídu (nebo nadřazenou třídu), podtřída zdědí všechny atributy a metody nadřazené třídy. Podtřída může volitelně přepsat chování (poskytnout metodám nové nebo rozšířené funkce) zděděné z nadřazené třídy. Typicky podtřída nemůže rozšířit více super tříd (např. V Javě). Proto nemůžete použít rozšíření pro vícenásobné dědictví. Chcete-li mít více 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 vytvořit, musíte použít koncept dědičnosti, abyste mohli použít abstraktní třídy. Jinak třída Abstract nemá žádný užitek. Abstraktní třídy mohou obsahovat abstraktní metody a když je třída rozšířena, všechny metody (abstraktní a konkrétní) jsou zděděny. Zděděná třída může implementovat kteroukoli nebo všechny metody. Pokud nejsou implementovány všechny metody Abstract, stane se tato třída také třídou Abstract. Třída nemůže dědit z více než jedné abstraktní třídy (nejedná se o kvalitu abstraktních tříd per se, ale spíše o omezení dědičnosti).

Doporučená: