Rozdiely medzi rozhraním Java vs abstraktnou triedou

Rozhranie špecifikuje, čo trieda musí urobiť, ale nie ako. Je to v podstate plán pre danú triedu. Premenné deklarované v rozhraní sú predvolene verejné, statické a konečné. Trieda, ktorá je deklarovaná kľúčovým slovom „abstrakt“, sa nazýva abstraktná trieda Trieda, ktorá je odvodená z triedy abstrakt, musí definovať všetky metódy, ktoré sú deklarované ako abstrakt v abstraktnej triede.

Čo je rozhranie?

Rozhranie je ako trieda, ale nie to, čo môže mať metódy a premenné ako triedu, ale metódy deklarované v rozhraní sú v predvolenom nastavení abstraktné. Rozhranie sa používa na zabezpečenie úplnej abstrakcie, pretože metódy v rozhraniach nemajú telo. Predtým, ako sa k nim pokúsia získať prístup, ich musí trieda implementovať. Všeobecne platí, že trieda, ktorá implementuje rozhranie, musí definovať všetky metódy deklarované v rozhraní, pokiaľ to tak nie je, musí byť trieda vyhlásená za abstraktnú. Rozhranie nemôžeme rozšíriť na viac ako jednu triedu, pretože to Java neumožňuje. Na vyhlásenie rozhrania musíme použiť kľúčové slovo rozhrania a implementovať rozhranie, ktoré musíme použiť kľúčové slovo implementuje.

Čo je to abstrakt?

Trieda, ktorá je deklarovaná kľúčovým slovom „abstrakt“, sa nazýva abstraktná trieda. Abstraktná trieda môže mať na rozdiel od normálnej triedy abstrakt (metóda bez tela) a konkrétne metódy (metóda s telom). Abstraktnú triedu nemožno vytvoriť, tj nemôžeme pre ňu vytvoriť objekt, ale môžeme mať odkazy na abstraktnú triedu vytvorením inej triedy, ktorá rozširuje abstraktnú triedu a poskytuje implementáciu metód. Môžeme použiť objekt dieťaťa (ktorý je novo vytvorený) na volanie abstraktných a normálnych metód. Môže mať konštruktory a abstraktná trieda sa volá, keď sa vytvorí zdedená inštancia triedy. V Jave môžeme mať abstraktnú triedu bez abstraktného kľúčového slova, ale tieto triedy nemôžu byť konkretizované, iba zdedené a môžu mať aj konečné metódy.

Porovnanie vzájomných vzťahov medzi rozhraním Java a abstraktnou triedou (infografika)

Ďalej uvádzame Top 9 Porovnanie medzi rozhraním Java vs Abstraktnou triedou

Kľúčové rozdiely medzi Java rozhraním a abstraktnou triedou

Rozhranie Java Interface vs Abstraktná trieda sú populárnymi voľbami na trhu; poďme diskutovať o niektorých hlavných rozdieloch medzi rozhraním Java vs triedou abstraktov:

  • Rozhranie sa dá použiť na dosiahnutie viacnásobného dedičstva a voľnej väzby, ktorú nemôžeme dosiahnuť abstraktnou triedou.
  • Rozhranie použité na dosiahnutie úplnej abstrakcie, zatiaľ čo abstraktná trieda môže dosiahnuť čiastočnú abstrakciu.
  • Abstraktná trieda rozširuje súčasne iba jednu normálnu triedu alebo abstraktnú triedu, zatiaľ čo rozhranie môže rozširovať ľubovoľný počet rozhraní súčasne.
  • Abstraktná trieda rozširuje ďalšiu abstraktnú alebo normálnu triedu, zatiaľ čo rozhranie môže rozširovať iba ďalšie Java rozhranie.
  • V abstraktnej triede musíme deklarovať metódy pomocou „abstraktného“ kľúčového slova, zatiaľ čo v rozhraní môžeme deklarovať metódy s alebo bez „abstraktného“ kľúčového slova.
  • Rozhranie môže mať iba abstraktné metódy, zatiaľ čo abstraktné triedy môžu mať abstraktné aj normálne triedy.
  • Abstraktná trieda môže mať rôzne premenné, ako sú statické, konečné, nekonečné, nestatické, verejné, súkromné ​​atď., Zatiaľ čo rozhranie môže mať iba verejné, statické a konečné premenné.
  • Abstraktnú triedu a jej metódy je možné vytvoriť pomocou kľúčového slova „abstrakt“, zatiaľ čo kľúčové slovo rozhrania sa používa na vytvorenie rozhrania, ale nie metód.
  • Abstraktná trieda môže mať konštruktory, zatiaľ čo rozhranie nemá konštruktora.
  • Abstraktná trieda sa používa na definovanie kontraktu, implementácia metód pre podtriedu, zatiaľ čo rozhranie sa používa na definovanie kontraktu pre podtriedy.
  • Rozhranie môže rozširovať iba ďalšie rozhrania Java, zatiaľ čo abstraktná trieda môže rozširovať ďalšie triedy a implementovať rozhranie tiež.
  • Trieda, ktorá rozširuje abstraktnú triedu pomocou kľúčového slova rozširovania, musí implementovať všetky metódy deklarované v abstraktnej triede, pokiaľ trieda nie je tiež abstraktnou triedou, zatiaľ čo trieda, ktorá implementuje rozhranie pomocou kľúčového slova rozhrania, tiež poskytuje implementáciu pre všetky metódy deklarované v rozhraní.

Porovnávacia tabuľka Java rozhranie s abstraktnou triedou

Nasleduje porovnávacia tabuľka medzi rozhraním Java a abstraktnou triedou

Základ porovnania medzi rozhraním Java vs abstraktnou triedouAbstraktná triedaRozhranie Java
Typ metódyTrieda Abstract môže mať abstraktné (metódy bez tela) aj ne-abstraktné (metódy s telom) metódyV rozhraní môžeme mať iba abstraktné metódy. Z Java 8, Interface môže mať aj statické a predvolené metódy
syntaxAbstraktnú triedu je možné deklarovať takto:
verejná trieda abstraktných škôl (Verejné triedy abstraktných prázdnin ();
verejná abstraktná medzera ();)
Rozhranie možno deklarovať takto:
tvar verejného rozhrania (Void draw_rect (); Void draw_square ();)
Konečná premennáAbstraktná trieda môže mať konečné a ne-konečné premenné.Zatiaľ čo rozhranie môže mať iba konečné premenné, pretože premenné sú predvolene konečné v rozhraní.
uskutočnenieAbstraktná trieda môže zabezpečiť implementáciu všetkých abstraktných metód v rozhraní.Zatiaľ čo v rozhraní nemôžeme zabezpečiť implementáciu abstraktnej triedy.
Typ premennejAbstraktná trieda môže mať všetky typy premenných, tj konečnú, nekonečnú, statickú, nestatickú, súkromnú, verejnú atď.Zatiaľ čo rozhranie môže mať iba verejné, statické a konečné premenné.
Členovia údajov PrístupnosťAbstraktná trieda môže mať členov triedy ako súkromných, chránených, verejných atď.Rozhranie môže mať iba členov verejnej triedy, pretože členovia dát rozhrania sú v predvolenom nastavení verejné.
Dedičnosť verzus abstrakciaAbstraktnú triedu je možné rozšíriť pomocou kľúčového slova „rozširuje“ a je potrebné zabezpečiť implementáciu všetkých deklarovaných metód v nadradenej triede alebo abstraktnej triede.Rozhranie možno implementovať pomocou kľúčového slova „interface“ a je potrebné zabezpečiť implementáciu všetkých metód deklarovaných v rozhraní
Viacnásobná implementáciaAbstraktná trieda môže rozšíriť ďalšiu triedu Java implementujúcu viacero rozhraníRozhranie môže rozšíriť iba ďalšie rozhranie.
Kedy použiťAbstraktná trieda sa musí použiť, keď niektoré triedy potrebujú zdieľať niekoľko riadkov kódu, potom môžeme tento kód zaradiť do abstraktnej triedy a rozšíriť o všetky súvisiace triedy.Rozhranie sa môže použiť, keď potrebujeme dosiahnuť viacnásobné dedičstvo, úplnú abstrakciu implementáciou všetkých metód deklarovaných v rozhraní triedou, ktorá implementuje rozhranie.

Záver - rozhranie Java vs abstraktná trieda

Nakoniec je to prehľad rozdielu medzi rozhraním Java a verziou Abstract Class. Dúfam, že budete mať lepšie pochopenie týchto konceptov rozhrania Java Interface vs Abstract Class. Na základe našich požiadaviek môžeme používať súčasne Java Interface vs Abstraktnú triedu, iba rozhranie a iba abstraktnú triedu. Najlepšie je však navrhnúť použitie rozhraní a abstraktnej triedy. Keď trieda potrebuje zdieľať nejaký kód, potom môžeme tento kód umiestniť do abstraktnej triedy a keď sa vyžaduje stav objektu, môžeme získať definovaním nestatických alebo ne-konečných polí, potom môžeme použiť abstraktnú triedu. Môžeme použiť rozhranie, keď potrebujeme úplnú abstrakciu, viacnásobnú dedičnosť a voľné spojenie.

Odporúčaný článok

Toto bolo sprievodcom najväčšími rozdielmi medzi Java Interface a Abstraktnou triedou. Tu diskutujeme aj kľúčové rozdiely Java Interface vs Abstraktné triedy s infografikou a porovnávacou tabuľkou. Môžete sa tiež pozrieť na nasledujúce články -

  1. Aké užitočné sú otázky a odpovede na pohovor C #?
  2. 8 Užitočné porovnanie HTML5 vs Flash
  3. Java vs C # - 8 Dôležité rozdiely
  4. Ruby vs Node
  5. Porovnanie HTML5 a JavaScript
  6. ArrayList vs Java Vector

Kategórie: