Rozdiely medzi abstraktnou triedou a rozhraním v jazyku Java

Abstraktné trieda vs rozhranie v Jave

Aby sme pochopili rozdiely medzi abstraktnou triedou a rozhraním v Jave, je dôležité najprv porozumieť každej z nich nezávisle. Abstraktná trieda v Jave sa používa pri deklarovaní podtried so súborom spoločných charakteristík. Bežné používanie abstraktnej triedy je super triedou iných tried, čo jej v skutočnosti umožňuje rozšíriť abstraktnú triedu. Abstraktné kľúčové slovo sa používa vo vyhlásení abstraktnej triedy. Rovnako ako akákoľvek iná trieda, aj abstraktná trieda obsahuje polia, ktoré popisujú metódy a charakteristiky, ktoré môže trieda vykonávať. Samotným vyhlásením abstraktnej triedy nie je možné túto triedu iniciovať

Rozhranie Java sa dá prirovnať k protokolu. Predstavuje vopred stanovené a dohodnuté správanie, ktoré umožňuje uľahčenie interakcie nepríbuzných objektov. V závislosti od používateľa má rozhranie kľúč k vykonávaniu rôznych akcií. Toto rozhranie teda slúži ako spojenie medzi výrobcom a spotrebiteľom. Rozhrania v Jave sú teda skupinou metód obsahujúcich prázdne telá, ktoré môžu mať stále vyhlásenia. Pri vystavení triedy rozhraniu Java to znamená, že očakávané správanie sa triedy je implementácia všetkých metód rozhrania.


rozdiely

Po prvé, abstraktná trieda umožňuje polia, ktoré nie sú statické alebo konečné, na rozdiel od statických a konečných polí používaných v rozhraniach. Rozhrania nemôžu obsahovať žiadny implementačný kód a môže existovať implementačný kód používaný v abstraktnej triede. Implementačné kódy uvedené v abstraktnej triede môžu mať niekoľko alebo všetky implementované metódy. V predvolenom nastavení sú všetky metódy rozhrania „abstraktné“.

Viditeľnosť je možná aj pre metódy alebo členov abstraktnej triedy, ktoré sa môžu líšiť, napríklad verejné, chránené, súkromné ​​alebo žiadne. Na druhej strane viditeľnosť rozhrania môže byť nastavená iba na jeden režim viditeľnosti, ktorý je „verejný“.

Abstraktná trieda automaticky zdedí triedu objektu. To v skutočnosti znamená, že sú zahrnuté metódy ako klon () a rovná sa (). V rozhraní nie je možné dedenie triedy objektov. Po tomto má abstraktná trieda schopnosť mať konštruktora, ale rozhranie ju nemôže mať.

Rozhranie v jazyku Java má tiež veľmi dôležitú funkciu pri implementácii viacerých dedičstiev, pretože trieda môže mať iba jednu super triedu. Aj keď môže byť prítomná iba jedna nadtrieda, môže byť implementovaná v ľubovoľnom počte rozhraní. Nie je možné mať viacnásobné dedičstvo v abstraktnej triede.

Vo výkone sú rozhrania pri implementácii pomalšie v porovnaní s abstraktnou triedou, hlavne kvôli ďalšiemu smeru nájdenia zodpovedajúcej metódy v triede. Rozdiel sa však spomalil vďaka moderným virtuálnym strojom Java, ktoré sa neustále inovujú.

Pridanie metódy do rozhrania vyžaduje, aby ste sledovali všetky implementačné triedy, ktoré implementujú konkrétne rozhranie. Rozhranie môžete tiež rozšíriť tak, aby malo ďalšie metódy. Ak náhodou pracujete s abstraktnou triedou, stačí pridať predvolenú implementáciu metódy a kód bude naďalej fungovať. Pokiaľ existujú rozdiely medzi abstraktnými triedami a rozhraniami, je dôležité poznamenať, že nejde o rivalov, ale rozdiely tu uvedené slúžia na vzájomné dopĺňanie sa..  

zhrnutie

  1. Abstraktné polia triedy nie sú statické alebo konečné na rozdiel od rozhrania, ktoré má statické a konečné tabuľky.

  2. V rozhraniach nie je možné použiť žiadny implementačný kód, zatiaľ čo v abstraktnej triede.

  3. Viditeľnosť rozhrania môže byť iba verejná, zatiaľ čo viditeľnosť abstraktných tried sa môže líšiť.

  4. Abstraktná trieda automaticky zdedí triedu objektu, ale v rozhraní to nie je možné.

  5. Abstraktná trieda je pri implementácii rýchlejšia ako rozhranie.