Rozdiel medzi abstraktnou triedou a dedičnosťou

Obsah:

Rozdiel medzi abstraktnou triedou a dedičnosťou
Rozdiel medzi abstraktnou triedou a dedičnosťou

Video: Rozdiel medzi abstraktnou triedou a dedičnosťou

Video: Rozdiel medzi abstraktnou triedou a dedičnosťou
Video: What is Systems engineering?, Explain Systems engineering, Define Systems engineering 2024, December
Anonim

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širovať ďalšie triedy. Abstraktná trieda je trieda, ktorú nemožno inicializovať, ale možno ju rozšíriť. Abstraktné triedy majú teda zmysel len vtedy, ak programovací jazyk podporuje dedičnosť. V jazyku Java sa abstraktné triedy deklarujú pomocou kľúčového slova Abstract, zatiaľ čo kľúčové slovo Extends sa používa na dedenie z (super) triedy.

Čo je abstraktná trieda?

Abstraktné triedy, známe aj ako abstraktné základné triedy (ABC), zvyčajne nemožno vytvoriť inštanciu (inštanciu tejto triedy nemožno vytvoriť). Takže abstraktné triedy majú zmysel len vtedy, ak programovací jazyk podporuje dedičnosť (schopnosť vytvárať podtriedy z rozšírenia triedy). Abstraktné triedy zvyčajne predstavujú abstraktný koncept alebo entitu s čiastočnou alebo žiadnou implementáciou. Preto abstraktné triedy fungujú ako nadradené triedy, z ktorých sú odvodené podradené triedy, takže podriadená trieda bude zdieľať neúplné vlastnosti nadradenej triedy a na ich dokončenie je možné pridať funkcie.

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éto abstraktné metódy, ide o konkrétnu triedu. Ale ak nie, trieda dieťaťa sa tiež stane abstraktnou triedou. To všetko znamená, že keď programátor nominuje triedu ako abstrakt, hovorí, že trieda bude neúplná a bude mať prvky, ktoré bude potrebné doplniť dediacimi podtriedami. Je to pekný spôsob, ako vytvoriť zmluvu medzi dvoma programátormi, čo zjednodušuje úlohy pri vývoji softvéru. Programátor, ktorý píše kód na dedenie, musí presne dodržiavať definície metód (ale samozrejme môže mať vlastnú implementáciu).

Čo je dedičnosť?

Dedičnosť je objektovo orientovaný koncept, ktorý umožňuje novým triedam rozširovať ďalšie triedy. Kľúčové slovo Extends sa používa na implementáciu konceptu dedičnosti v programovacom jazyku Java. Dedičnosť v podstate poskytuje opätovné použitie kódu tým, že umožňuje rozšírenie vlastností a správania existujúcej triedy o novo definovanú triedu. Keď nová podtrieda (alebo odvodená trieda) rozširuje nadtriedu (alebo rodičovskú triedu), táto podtrieda zdedí všetky atribúty a metódy nadtriedy. Podtrieda môže voliteľne prepísať správanie (poskytovať novú alebo rozšírenú funkčnosť metód) zdedené z nadradenej triedy. Typicky podtrieda nemôže rozšíriť viacero supertried (napr. v jazyku Java). Preto nemôžete použiť rozšírenia pre viacnásobné dedičstvo. Ak chcete získať viacnásobné dedičstvo, musíte použiť rozhrania.

Aký je rozdiel medzi abstraktnou triedou a dedičnosťou?

Abstraktné triedy zvyčajne predstavujú abstraktný koncept alebo entitu s čiastočnou alebo žiadnou implementáciou. Dedičnosť umožňuje novým triedam rozšíriť ďalšie triedy. Pretože abstraktné triedy nemožno vytvárať inštanciami, musíte použiť koncept dedenia, aby ste mohli používať abstraktné triedy. V opačnom prípade nemá abstraktná trieda žiadny význam. Abstraktné triedy môžu obsahovať abstraktné metódy a keď sa trieda rozšíri, 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 abstraktné metódy, potom sa aj táto trieda stane abstraktnou triedou. Trieda nemôže dediť z viac ako jednej abstraktnej triedy (toto nie je kvalita abstraktných tried ako taká, ale skôr obmedzenie dedenia).

Súvisiace príspevky:

Image
Image
Image
Image

Rozdiel medzi abstraktnou triedou a konkrétnou triedou

Image
Image
Image
Image

Rozdiel medzi virtuálnym a abstraktným

Image
Image
Image
Image

Rozdiel medzi abstraktnou triedou a rozhraním

Image
Image
Image
Image

Rozdiel medzi implementáciami a rozšíreniami

Image
Image
Image
Image

Rozdiel medzi grafom a stromom

Filed under: Programming Tagged with: ABC, abstract, Abstract Base Classes, Abstract class, Abstract class, Abstract keyword, Abstract Methods, Conkrét class, Extends keyword, Dedičnosť, Trieda dedičnosti, zdedená trieda, Java, viacnásobná dedičnosť, objektovo orientované koncepty, bežná trieda, super trieda

Obrázok
Obrázok

O autorovi: Indika

Indika, BSc. Eng, MSECE Computer Engineering, PhD. Počítačová veda, je odborným asistentom a má výskumné záujmy v oblastiach bioinformatiky, výpočtovej biológie a biomedicínskeho spracovania prirodzeného jazyka.

Komentáre

  1. Obrázok
    Obrázok

    Jason hovorí

    30. augusta 2017 o 13:25

    Ďakujeme za vysvetlenie rozdielu. Všetky moje otázky boli týmto vyriešené.

    Odpovedať

  2. Obrázok
    Obrázok

    Aus hovorí

    10. mája 2019 o 15:04

    najlepšia odpoveď na webe, Učiteľ nevysvetľuje hovno a nedáva zmysel, monotónne mf. Takto vysvetľujete pojmy.

    Odpovedať

Zanechať odpoveď Zrušiť odpoveď

Vaša e-mailová adresa nebude zverejnená. Povinné polia sú označené

Komentár

Meno

E-mail

Webová stránka

Vyžiadajte si článok
Vyžiadajte si článok
Vyžiadajte si článok
Vyžiadajte si článok

Vybrané príspevky

Rozdiel medzi príznakmi koronavírusu a prechladnutia
Rozdiel medzi príznakmi koronavírusu a prechladnutia

Rozdiel medzi koronavírusom a príznakmi nachladnutia

Rozdiel medzi koronavírusom a SARS
Rozdiel medzi koronavírusom a SARS

Rozdiel medzi koronavírusom a SARS

Rozdiel medzi koronavírusom a chrípkou
Rozdiel medzi koronavírusom a chrípkou

Rozdiel medzi koronavírusom a chrípkou

Rozdiel medzi koronavírusom a Covid 19
Rozdiel medzi koronavírusom a Covid 19

Rozdiel medzi koronavírusom a Covid 19

Môže sa vám páčiť

Rozdiel medzi sibírskym huskym a malamutom

Rozdiel medzi Calculus AB a BC

Odporúča: