Rozdiel medzi abstraktnou triedou a rozhraním

Rozdiel medzi abstraktnou triedou a rozhraním
Rozdiel medzi abstraktnou triedou a rozhraním

Video: Rozdiel medzi abstraktnou triedou a rozhraním

Video: Rozdiel medzi abstraktnou triedou a rozhraním
Video: Autoimmunity in POTS: 2020 Update- Artur Fedorowski, MD, PhD, FESC 2024, Júl
Anonim

Abstraktná trieda vs rozhranie

Abstraktná trieda a rozhranie sú dve objektovo orientované konštrukcie, 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 rozhranie možno považovať za prostriedok implementácie zmluvy. Abstraktná trieda je trieda, ktorú nemožno inicializovať, ale možno ju rozšíriť. Rozhranie je typ, ktorý musia implementovať iné triedy. V jazyku Java sa abstraktné triedy deklarujú pomocou kľúčového slova Abstract, zatiaľ čo kľúčové slovo rozhrania sa používa na definovanie rozhrania.

Č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 to rozhranie?

Rozhranie je abstraktný typ, ktorý sa používa na špecifikáciu zmluvy, ktorá by mala byť implementovaná triedami, ktoré implementujú toto rozhranie. Kľúčové slovo interface sa používa na definovanie rozhrania a kľúčové slovo Implements sa používa na implementáciu rozhrania triedou (v programovacom jazyku Java). Rozhranie zvyčajne obsahuje iba podpisy metód a deklarácie konštanty. Akékoľvek rozhranie, ktoré implementuje konkrétne rozhranie, by malo implementovať všetky metódy definované v rozhraní alebo by malo byť deklarované ako abstraktná trieda. V jazyku Java môže byť typ odkazu na objekt definovaný ako typ rozhrania. Ale tento objekt musí byť buď null, alebo by mal obsahovať objekt triedy, ktorá implementuje toto konkrétne rozhranie. Pomocou kľúčového slova Implements v jazyku Java môžete implementovať viacero rozhraní do jednej triedy.

Aký je rozdiel medzi abstraktnou triedou a rozhraním?

Abstraktné triedy zvyčajne predstavujú abstraktný koncept alebo entitu s čiastočnou alebo žiadnou implementáciou. Na druhej strane, rozhranie je abstraktný typ, ktorý sa používa na špecifikáciu zmluvy, ktorá by mala byť implementovaná triedami. Abstraktné triedy by mali byť dedené (alebo rozšírené), zatiaľ čo rozhrania by mali byť implementované. Abstraktné triedy môžu obsahovať abstraktné metódy, zatiaľ čo rozhranie by malo obsahovať iba abstraktné metódy. Abstraktné triedy môžu obsahovať ľubovoľné premenné, ale rozhrania môžu definovať iba konštanty. Trieda nemôže dediť z viac ako jednej abstraktnej triedy, ale môže implementovať viacero rozhraní. Rozhranie nemôže implementovať iné rozhranie. Rozhranie však môže triedu rozšíriť.

Odporúča: