Abstraktné trieda vs rozhranie
Abstraktná trieda a rozhranie sú dva objektovo orientované konštrukty nájdené v mnohých objektovo orientovaných programovacích jazykoch, ako je Java. Abstraktná trieda sa môže považovať za abstraktnú verziu bežnej (konkrétnej) triedy, zatiaľ čo rozhranie sa môže považovať za prostriedok vykonávania zmluvy. Abstraktná trieda je trieda, ktorú nie je možné inicializovať, ale je možné ju rozšíriť. Rozhranie je typ, ktorý musia implementovať iné triedy. V Java sa triedy Abstract deklarujú pomocou kľúčového slova Abstract, zatiaľ čo kľúčové slovo interface sa používa na definovanie rozhrania.
Čo je to 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ť 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é 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 rozhranie?
Rozhranie je abstraktný typ, ktorý sa používa na špecifikovanie zmluvy, ktorá by sa mala implementovať triedami, ktoré implementujú toto rozhranie. Kľúčové slovo rozhrania sa používa na definovanie rozhrania a kľúčové slovo implementuje sa používa na implementáciu rozhrania triedou (v programovacom jazyku Java). Rozhranie zvyčajne obsahuje iba podpisy metód a konštantné vyhlásenia. Každé 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 Java môže byť typ odkazu na objekt definovaný ako typ rozhrania. Tento objekt však musí byť nulový alebo mal by obsahovať objekt triedy, ktorý implementuje dané 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 obyčajne predstavujú abstraktný pojem alebo entitu s čiastočnou alebo žiadnou implementáciou. Na druhej strane, rozhranie je abstraktný typ, ktorý sa používa na špecifikovanie zmluvy, ktorú majú implementovať triedy. Abstraktné triedy by sa mali zdediť (alebo rozšíriť), zatiaľ čo rozhrania by sa mali implementovať. Abstraktné triedy môžu obsahovať abstraktné metódy, zatiaľ čo rozhranie by malo obsahovať iba abstraktné metódy. Abstraktné triedy môžu obsahovať akékoľvek premenné, ale rozhrania môžu definovať iba konštanty. Trieda nemôže zdediť viac ako jednu abstraktnú triedu, ale môže implementovať viacero rozhraní. Rozhranie nemôže implementovať iné rozhranie. Rozhranie však môže rozšíriť triedu.