Rozdiel medzi rozhraním a abstraktnou triedou v jazyku Java

Rozdiel kľúčov: rozhranie alebo protokol je bežný spôsob, ktorý umožňuje nesúvisiacim objektom navzájom komunikovať. Predstavuje dohodnuté správanie, ktoré uľahčuje interakciu medzi týmito dvoma objektmi. Abstraktná trieda je trieda objektov, ktoré nemožno inštancovať alebo nastaviť inštanciu objektu. Táto trieda nemusí mať žiadnu implementáciu alebo môže mať neúplnú implementáciu.

Java, C ++, C # sú komplikované programovacie jazyky, ktoré vyžadujú podrobnú štúdiu a porozumenie, s ktorými sa dá pracovať. Existuje veľa rôznych metód, ktoré sa používajú v týchto jazykoch, ktoré rozhodujú o tom, ako jazyk bude fungovať. Interface a Abstract Class sú dva mätúce koncepty, ktoré sú súčasťou OOP (objektovo-orientované programovanie). Tieto dve môžu byť použité jednotlivo alebo navzájom. Tieto dve sú navzájom úplne odlišné a používajú sa v rôznych prípadoch.

Java je programovací jazyk, ktorý bol ovplyvnený jazykom C. Odvodzuje veľkú časť svojej syntaxe z C a C ++, avšak má menej zariadení nižšej úrovne ako jedna. Java je univerzálny programovací jazyk, ktorý je navrhnutý tak, aby mal menej implementačných závislostí v porovnaní s predchádzajúcimi jazykmi. Je súbežný, založený na triedach a objektovo orientovaný jazyk.

Java bol vyvinutý Jamesom Goslingom v spoločnosti Sun Microsystems a bol vydaný v roku 1995. Bol pôvodne prepustený ako základná súčasť platformy Java spoločnosti Sun Microsystems. Spoločnosť Sun odvtedy licencovala väčšinu svojich technológií Java pod licenciou GNU General Public License. To znamená, že všetky technológie, ktoré sú licencované pod licenciou GNU General Public License, sú otvorené a sú dostupné bezplatne. Spoločnosť Sun Microsystems sa nakoniec zlúčila do spoločnosti Oracle Corporation. Od roku 2012 sa jazyk Java stal jedným z najpopulárnejších programovacích jazykov na použitie. Platí to najmä pre webové aplikácie klient-server. Mnoho ďalších systémov vyvinulo alternatívne implementácie technológií Sun, ako napríklad GNU Compiler for Java a GNU Classpath.

Rozhranie alebo protokol je bežný spôsob, ktorý umožňuje vzájomne komunikovať s nesúvisiacimi objektmi. Predstavuje dohodnuté správanie, ktoré uľahčuje interakciu medzi týmito dvoma objektmi. Rozhranie obsahuje kľúč pre rôzne realizované akcie a slúži ako prepojenie medzi dvomi rôznymi objektmi. Ak je trieda objektov vystavená rozhraniu, trieda bude musieť sledovať správanie implementované rozhraním. Bežné rozhrania obsahujú len konštantné deklarácie a podpisy metód. Každé rozhranie, ktoré implementuje konkrétne rozhranie, musí použiť všetky metódy uvedené v rozhraní alebo byť deklarované ako abstraktná trieda. V jazyku Java môže byť akýkoľvek objekt definovaný ako rozhranie, ak je daný objekt null alebo obsahuje triedu, v ktorej implementuje konkrétne rozhranie. Jeden môže implementovať viacero rozhraní do jednej triedy v jazyku Java pomocou kľúčových slov implementácie.

Abstraktná trieda je trieda objektov, ktoré nemožno inštancovať alebo nastaviť inštanciu objektu. Táto trieda nemusí mať žiadnu implementáciu alebo môže mať neúplnú implementáciu. Môže mať aj abstraktné metódy alebo vlastnosti, ktoré sú zdieľané všetkými podtriedami. V niektorých programovacích jazykoch sú abstraktné typy bez implementácie známe ako rozhrania. V jazyku Java je možné vytvoriť abstraktný typ pomocou kľúčového slova "abstrakt" v definícii triedy. Účelom abstraktnej triedy je umiestniť všetky metódy, ktoré nie sú implementované v abstraktnej triede, a nechať ju v podtriede, aby určila, ako implementovať tieto triedy. Ak má trieda jedinej abstraktnú metódu, musí byť trieda deklarovaná ako abstraktná trieda, hoci nie je potrebné mať aspoň jednu metódu na deklaráciu abstraktnej triedy.

Malliktalksjava.in uvádza hlavné rozdiely medzi rozhraním a abstraktom ako:

  • Abstraktná trieda má konštruktéra, ale rozhranie nie je.
  • Abstraktné triedy môžu mať implementácie pre niektorých svojich členov (metódy), ale rozhranie nemôže mať implementáciu pre žiadneho z jeho členov.
  • Abstraktné triedy by mali mať iné podtriedy, ktoré budú zbytočné.
  • Rozhrania musia mať implementácie inými triedami, ktoré budú zbytočné
  • Iba rozhranie môže rozšíriť ďalšie rozhranie, ale každá trieda môže rozšíriť abstraktnú triedu.
  • Všetky premenné v rozhraniach sú štandardné
  • Rozhrania poskytujú formu viacnásobného dedičstva. Trieda môže rozšíriť iba jednu ďalšiu triedu.
  • Rozhrania sú obmedzené na verejné metódy a konštanty bez implementácie. Abstraktné triedy môžu mať čiastočnú implementáciu, chránené časti, statické metódy atď.
  • Trieda môže implementovať niekoľko rozhraní. Ale v prípade abstraktnej triedy môže trieda rozšíriť iba jednu abstraktnú triedu.
  • Rozhrania sú pomalé, pretože vyžadujú ďalšiu navigáciu na nájdenie zodpovedajúcej metódy v aktuálnej triede. Abstraktné triedy sú rýchle.
  • Modifikátor prístupnosti (verejný / súkromný / interný) je povolený pre abstraktnú triedu. Rozhranie neumožňuje modifikátor prístupnosti
  • Abstraktná trieda môže obsahovať úplné alebo neúplné metódy. Rozhrania môžu obsahovať iba podpis metódy, ale žiadne telo. Takže abstraktná trieda môže implementovať metódy, ale rozhranie nemôže implementovať metódy.
  • Abstraktná trieda môže obsahovať polia, konštruktory alebo deštruktory a implementovať vlastnosti. Rozhranie nesmie obsahovať polia, konštruktory alebo deštruktory a má len podpis vlastníctva, ale žiadnu implementáciu.
  • Rôzne modifikátory prístupu, ako sú abstraktné, chránené, interné, verejné, virtuálne atď., Sú užitočné v abstraktných triedach, ale nie v rozhraniach.
  • Rozsah abstraktov je odvodený od triedy.
  • Rozsah rozhrania je až na akúkoľvek úroveň dedičského reťazca.

Informácie pre tabuľku sú zdvorilosťou codeproject.com a mindprod.com

Rozhranie

Abstraktná trieda

Viacnásobné dedičstvo

Trieda môže zdediť niekoľko rozhraní.

Trieda môže zdediť iba jednu abstraktnú triedu.

Predvolená implementácia

Rozhranie nemôže poskytnúť žiadny kód, len podpis.

Abstraktná trieda môže poskytnúť kompletný, predvolený kód a / alebo len podrobnosti, ktoré je potrebné prepísať.

Modifikátory prístupu

Rozhranie nemôže mať modifikátory prístupu pre subs, funkcie, vlastnosti atď. Všetko sa považuje za verejné.

Abstraktná trieda môže obsahovať modifikátory prístupu pre subs, funkcie, vlastnosti.

Core vs. Peripheral

Rozhrania sa používajú na definovanie periférnych schopností triedy. Inými slovami, človek a vozidlo môžu mať dedičstvo z rozhrania IM.

Abstraktná trieda definuje jadrovú identitu triedy a tam sa používa pre objekty rovnakého typu.

rovnorodosť

Ak rôzne implementácie zdieľajú iba podpisy metód, potom je lepšie používať rozhrania.

Ak sú rôzne implementácie rovnakého druhu a používajú bežné správanie alebo stav, potom je lepšie použiť abstraktnú triedu.

rýchlosť

Vyžaduje viac času na nájdenie aktuálnej metódy v príslušných triedach.

rýchly

Pridávanie funkcií

Ak pridáme novú metódu k rozhraniu, musíme sledovať všetky implementácie rozhrania a definovať implementáciu novej metódy.

Ak pridáme novú metódu do abstraktnej triedy, potom máme možnosť poskytnúť predvolenú implementáciu, a preto celý existujúci kód môže fungovať správne.

Polia a konštanty

V rozhraniach nie je možné definovať žiadne polia.

Abstraktná trieda môže mať definované polia a konštanty.

stručnosť

Konštantné deklarácie v rozhraní sú všetky predpokladané verejné statické konečné.

Zdieľaný kód sa môže pridať do abstraktnej triedy.

konštanty

Len statické konečné konštanty, môžu ich použiť bez kvalifikácie v triedach implementujúcich rozhranie.

Možné sú aj inštančné aj statické konštanty. Ako konštanty je možné vypočítať statický aj inštančný kód inštancie.

Pohodlie tretej strany

Implementácia rozhrania sa môže pridať do ktorejkoľvek existujúcej triedy tretích strán.

Trieda tretej strany musí byť prepísaná tak, aby sa rozšírila iba z abstraktnej triedy.

is-a versus -able alebo can-do

Rozhrania sa často používajú na popísanie periférnych schopností triedy, nie na jej centrálnu identitu, napr. Trieda Automobile by mohla implementovať rozhranie Recyklovateľné, ktoré by sa mohlo vzťahovať na mnoho inak úplne nesúvisiacich objektov.

Abstraktná trieda definuje základnú identitu svojich potomkov. Implementované rozhrania vymenúvajú všeobecné veci, ktoré môže trieda robiť, nie to, čo je trieda.

V kontexte jazyka Java by mali používatelia zvyčajne implementovať rozhranie Runnable, a nie rozširovať Thread, pretože nemajú skutočný záujem o poskytnutie novej funkcie Thread, ale zvyčajne chcú, aby niektorý kód mohol fungovať nezávisle. Chcú vytvoriť niečo, čo sa dá spustiť vo vlákne, nie novým druhom vlákna. Podobný je - a vs. - diskusia nastáva, keď sa rozhodnete zdediť alebo delegovať.

Zapojiť

Používateľ môže napísať nový náhradný modul pre rozhranie, ktoré neobsahuje žiadnu páčku kódu spoločného s existujúcimi implementáciami. Keď užívateľ implementuje rozhranie, začnú od nuly bez akejkoľvek predvolenej implementácie. Používateľ musí získať nástroje od iných tried; nič nie je spojené s iným rozhraním ako niekoľkými konštantami. To dáva užívateľovi slobodu implementovať radikálne iný dizajn.

Používateľ musí používať abstraktnú triedu tak, ako je pre kódovú základňu so všetkými svojimi sprievodnými batožinami, dobrá alebo zlá. Autor abstraktnej triedy uložil používateľovi štruktúru.

údržba

Ak kód klienta hovorí len z hľadiska rozhrania, môžete jednoducho zmeniť konkrétnu implementáciu za ním pomocou továrenskej metódy.

Ak kód klienta hovorí len v abstraktnej triede, môžete ľahko zmeniť konkrétnu implementáciu za ním pomocou továrenskej metódy.

Odporúčaná

Súvisiace Články

  • populárne porovnania: Rozdiel medzi verejnou a súkromnou spoločnosťou

    Rozdiel medzi verejnou a súkromnou spoločnosťou

    Kľúčový rozdiel: spoločnosti môžu byť rozlíšené na základe právomoci ponúkať svoje cenné papiere širokej verejnosti. Spoločnosť, ktorá má povolenie na predaj cenných papierov pre širokú verejnosť, sa označuje ako verejná spoločnosť alebo verejne obchodovaná spoločnosť. Na druhej strane spoločnosť, k
  • populárne porovnania: Rozdiel medzi .NET a ASP.NET

    Rozdiel medzi .NET a ASP.NET

    Kľúčový rozdiel: .NET je softvérový rámec / infraštruktúra vyvinutá spoločnosťou Microsoft, ktorá sa používa na vývoj, spustenie a nasadzovanie novej generácie aplikácií a webových služieb XML. ASP.NET je webová aplikácia, ktorá je súčasťou .NET frameworku, ktorý sa používa na vytváranie dynamických webových aplikácií a webových služieb v ľubovoľnom jazyku .NET. .NET je softvérový framework / in
  • populárne porovnania: Rozdiel medzi aktívnymi a pasívnymi bezpečnostnými prvkami na vozidle

    Rozdiel medzi aktívnymi a pasívnymi bezpečnostnými prvkami na vozidle

    Hlavný rozdiel: Medzi aktívne bezpečnostné prvky patria najmä funkcie, ktoré zabraňujú riziku zrážky alebo nehody. Toto sú pomenované, pretože sú vždy aktívne a pracujú na prevencii nehody. Funkcie pasívnej bezpečnosti sú na druhej strane systémy, ktoré sú pasívne, až kým nie sú aktivované. Stávajú aktívnymi počas ne
  • populárne porovnania: Rozdiel medzi znárodnenými bankami a súkromnými bankami

    Rozdiel medzi znárodnenými bankami a súkromnými bankami

    Kľúčový rozdiel: znárodnenou bankou je akákoľvek komerčná banka, ktorú kupuje a kontroluje vláda. Súkromné ​​banky sú vo vlastníctve, riadené a riadené jednotlivcom alebo riadené partnerstvom. Bankovníctvo je v našich životoch veľmi dôležitým termínom. Banky je možné použiť na rôzne účely. Finančný stav jednotlivca sa často
  • populárne porovnania: Rozdiel medzi Kung Fu a Tai Chi

    Rozdiel medzi Kung Fu a Tai Chi

    Kľúčový rozdiel: Obaja, Kung Fu a Tai Chi sú čínskou formou bojových umení, zatiaľ čo rozdiel spočíva medzi ich technikami. Kung Fu sú vonkajšou formou bojových umení, ich postupy sa viac zameriavajú na silu a rýchlosť jednotlivca, zatiaľ čo Tai Chi je vnútorná forma bojového umenia, ktorej cvičenia sa viac zameriavajú na rovnováhu, stabilitu a citlivosť jednotlivca. Kung fu zahŕňa širokú škálu
  • populárne porovnania: Rozdiel medzi zombie a upírom

    Rozdiel medzi zombie a upírom

    Kľúčový rozdiel: Upíri sú vykreslení ako pekné, charizmatické, očarujúce bledé ľudské bytosti, ktoré uprednostňujú hody na ľudskej krvi. Upíri sú tiež zobrazovaní ako majú schopnosti ako ESP, telepatia, telekineza a schopnosť premeniť sa na netopiere alebo iné zvieratá. Kríže, drevené stĺpy, sväté vody, niektoré bylinky, cesnak a striebro sú považované za slabiny upírov. Zombie sú stále vykresľované ako blu
  • populárne porovnania: Rozdiel medzi chirurgickým bypassom a angioplastikou

    Rozdiel medzi chirurgickým bypassom a angioplastikou

    Kľúčový rozdiel: Na liečbu zúžených artérií sa používa bypass. Obchádzka alebo obtok sa vytvára okolo úseku blokovanej tepny. Táto nová cesta je vytvorená použitím štepu. Angioplastika je postup, pri ktorom sa koronárne artérie odblokujú. Angioplastický postup nevyžaduje operáciu s otvoreným srdcom. Artery môžu byť upchaté ma
  • populárne porovnania: Rozdiel medzi rugby a futbalom

    Rozdiel medzi rugby a futbalom

    Kľúčový rozdiel: Futbal (Futbal) sa hrá medzi 11 hráčmi na poli a obsahuje guľovitú guľu. Rugby obsahuje 13-15 hráčov a predĺženú guľu. Futbalový štafetový rugby sa skladá z dvoch polí 40 minút, zatiaľ čo futbal pozostáva z dvoch polí po 45 minútach a oba hry nezahŕňajú žiadne časové odstupy. Vo futbale sa hráč nesmie dotkn
  • populárne porovnania: Rozdiel medzi veľkosťou formátu A4, Foolscap, Letter a Legal

    Rozdiel medzi veľkosťou formátu A4, Foolscap, Letter a Legal

    Kľúčový rozdiel: Dokumenty špecifických veľkostí a rozmerov sa používajú na rôzne účely. Rozmery papierov formátu A4, boolscap, letter a legal size sú 210 x 297 mm, 203 x 330 m, 216 x 279 mm a 216 x 356 mm. Papier formátu A4 sa stal štandardom koncom 70. rokov. A4 je jednoznačne najdôležitejším papierom pre každodenné kancelárske použitie. Sú zaradené do kategórie

Redakcia Choice

Rozdiel medzi nuda a osamelosť

Kľúčový rozdiel: Nuda a osamelosť sú jednoducho dva odlišné pojmy. Nuda je subjektívny stav, keď človek nemá záujem z dôvodu pravidelného zjavenia alebo liečby. Na druhej strane osamelosť je stav, keď človek nemá nikoho, s kým sa s ním podelí, alebo je to čas, keď je človek vnútorne slabý a nie je schopný vyrovnať sa s emóciami okolo seba, nechce hovoriť a vyžadujú rozptýlenie. Nuda je situácia, keď niekto vôbe