Abstraktná trieda vs dedičstvo
Abstraktná trieda a dedičnosť sú dva dôležité objektovo orientované koncepty, ktoré sa nachádzajú v mnohých objektovo orientovaných programovacích jazykoch, ako je Java. Abstraktnú triedu možno považovať za abstraktnú verziu bežnej (konkrétnej) triedy, zatiaľ čo dedičnosť umožňuje novým triedam rozšíriť ďalšie triedy. Abstraktná trieda je trieda, ktorú nie je možné inicializovať, ale je možné ju rozšíriť. Takže abstraktné triedy majú zmysel iba vtedy, ak programovací jazyk podporuje dedičnosť. V Jave sa triedy Abstract deklarujú pomocou kľúčového slova Abstract, zatiaľ čo kľúčové slovo Extends sa používa na dedenie od (super) triedy.
Čo je abstraktná trieda?
Zvyčajne nie je možné vytvoriť inštancie tried abstraktov, známych tiež ako Abstraktné základné triedy (ABC) (inštanciu tejto triedy nemožno vytvoriť). Takže abstraktné triedy majú zmysel iba vtedy, ak programovací jazyk podporuje dedičnosť (schopnosť vytvárať podtriedy z rozširovania triedy). Abstraktné triedy obyčajne predstavujú abstraktný pojem alebo entitu s čiastočnou alebo žiadnou implementáciou. Preto abstraktné triedy fungujú ako rodičovské triedy, z ktorých sú odvodené podriadené triedy, takže podriadená trieda bude zdieľať neúplné vlastnosti nadradenej triedy a na ich doplnenie je možné pridať funkčnosť.
Abstraktné triedy môžu obsahovať abstraktné metódy. Podtriedy rozširujúce abstraktnú triedu môžu implementovať tieto (zdedené) abstraktné metódy. Ak podradená trieda implementuje všetky také abstraktné metódy, je to konkrétna trieda. Ak to tak nie je, trieda pre deti sa tiež stáva triedou abstraktov. To všetko znamená, že keď programátor nominuje triedu ako abstrakt, hovorí, že trieda bude neúplná a bude obsahovať prvky, ktoré musia byť doplnené zdedenými podtriedami. Je to pekný spôsob, ako vytvoriť zmluvu medzi dvoma programátormi, ktorá zjednodušuje úlohy pri vývoji softvéru. Programátor, ktorý píše kód na zdedenie, musí presne dodržiavať definície metód (ale samozrejme môže mať vlastnú implementáciu).
Čo je dedičstvo?
Dedičnosť je objektovo orientovaný koncept, ktorý umožňuje novým triedam rozšíriť ďalšie triedy. Kľúčové slovo rozširuje sa používa na implementáciu koncepcie dedičnosti v programovacom jazyku Java. Dedičnosť v zásade poskytuje opakované použitie kódu tým, že umožňuje rozširovať vlastnosti a správanie existujúcej triedy o novo definovanú triedu. Keď nová podtrieda (alebo odvodená trieda) rozširuje nadtriedu (alebo nadradenú triedu), táto podtrieda zdedí všetky atribúty a metódy nadtriedy. Podtrieda môže voliteľne potlačiť správanie (poskytnúť nové alebo rozšírené funkcie metódam) zdedené z nadradenej triedy. Podtrieda zvyčajne nemôže rozširovať viacero super tried (napr. V Jave). Z tohto dôvodu nemôžete použiť rozšírenia pre viacnásobné dedičstvo. Ak chcete mať viacnásobné dedičstvo, musíte použiť rozhrania.
Aký je rozdiel medzi abstraktnou triedou a dedičstvom?
Abstraktné triedy obyčajne predstavujú abstraktný pojem alebo entitu s čiastočnou alebo žiadnou implementáciou. Dedičnosť umožňuje novým triedam rozšíriť ďalšie triedy. Pretože triedy abstraktov nie je možné vytvoriť inštanciu, na využívanie tried abstraktov musíte použiť koncept dedičnosti. Inak trieda Abstract nemá využitie. Abstraktné triedy môžu obsahovať Abstraktné metódy a keď je trieda rozšírená, zdedia sa všetky metódy (Abstraktné a konkrétne). Zdedená trieda môže implementovať ktorúkoľvek alebo všetky metódy. Ak nie sú implementované všetky metódy abstraktov, táto trieda sa tiež stane triedou abstraktov. Trieda nemôže zdediť viac ako jednu triedu abstraktov (nejde o kvalitu tried abstraktov sama osebe, ale skôr o obmedzenie dedičnosti)..