C # Abstraktné vs. rozhranie - Naučte sa najdôležitejšie rozdiely

Obsah:

Anonim

Rozdiely medzi C # Abstraktné vs Rozhranie

Abstraktná trieda aj rozhranie sú veľmi dôležitými metodikami, ktoré je potrebné naučiť porozumieť akýmkoľvek objektovo orientovaným programovacím školeniam. Normálne sú obidve veľmi mätúce pre počiatočný začiatok žiaka v objektovo orientovanom programovaní. Ak definujeme jednu abstraktnú triedu, ale nič neimplementujeme, potom to úplne vyzerá ako Rozhranie, nikto nedokáže pochopiť žiadny rozdiel medzi nimi, skôr ako deklaráciu. Medzi triedami Interface a Abstract je však k dispozícii veľa rozdielov a podobností.

Abstraktná trieda je jednoduchá trieda, ktorá sa definuje ako abstraktná a nemôže byť vytvorená inštanciou. Abstraktná trieda musí byť rozšírená o niektoré podtriedy, aby sa využili všetky vlastnosti alebo pomôcka tejto konkrétnej nadtriedy alebo abstraktnej triedy. V skutočnosti pomáha udržiavať správnu hierarchiu nadtried alebo podtried. Viaceré podtriedy môžu používať rovnaký názov funkcie s rôznymi definíciami. Skutočne zaisťuje, že aplikácia by sa mala riadiť niektorou špecifickou hierarchiou alebo štandardmi, ktoré prenášajú aplikáciu správne vysvetliteľnú funkčnosť.

Rozhranie nie je absolútne trieda, je to rovnako ako entita, ktorá je definovaná jedným špecifickým slovom Rozhranie. Rozhranie nikdy nedefinovalo žiadnu definíciu, úplne záleží na konkrétnom vyhlásení, ktoré by malo dediť viacero tried súčasne. Viaceré triedy dokážu definovať viacnásobnú definíciu tohto individuálneho vyhlásenia jedného špecifického rozhrania. Je tiež držiteľom rovnakého druhu zariadenia ako trieda Abstract, hlavne pomáha udržiavať rovnakú hierarchiu podtried s odlišnou definíciou. Hlavný rozdiel medzi abstraktnou triedou a rozhraním je však rozšírený o viacero abstraktných tried, nie je možné, zatiaľ čo zdedenie viacerých rozhraní je možné. Pretože C # nepodporuje viacnásobné dedenie, preto rozhranie poskytuje rovnaký druh funkčnosti.

Porovnanie medzi dvoma hlavami medzi C # Abstraktné a Rozhranie (Infografika)

Nižšie je uvedené najlepšie porovnanie medzi C # Abstract vs Interface

Kľúčové rozdiely medzi abstraktom C # a rozhraním

Niektoré kľúčové rozdiely sú vysvetlené nižšie medzi C # Abstract vs Interface

  1. Abstraktná trieda aj rozhranie skutočne používajú jedna alebo viac podtried. Hlavným obmedzením je, že jedna podtrieda nemôže rozšíriť viac abstraktných tried, čo znamená, že nie je možné viacnásobné dedičstvo, zatiaľ čo podtrieda môže zdediť viac rozhraní naraz.
  2. Abstrakt môže obsahovať telo s definíciou alebo iba definíciou metódy. Môže byť možná podtrieda, ktorá rozširuje túto abstraktnú triedu s telovou metódou a tiež môže vysvetľovať podrobnosti tela o akejkoľvek konkrétnej definícii abstraktnej metódy, ktorú je možné prepísať. Abstraktná trieda by mala mať aspoň jednu abstraktnú metódu (znamená jedinú definíciu metódy bez tela). Rozhranie má iba definíciu metódy, nemalo by obsahovať žiadne podrobnosti o tele metódy definovania. Jedna podtrieda dedičnosť, ktorá rozhranie a využívať tie, ktoré nedefinujú metódu dynamickým poskytovaním správnych podrobností tela pre viacero podtried.
  3. Abstraktná trieda môže mať rôzne modifikátory prístupu, ako sú verejné, súkromné ​​alebo chránené, takže akákoľvek metóda alebo vlastnosti v abstraktnej triede môžu definovať rôzne modifikátory prístupu. Zatiaľ čo pre rozhranie nemôže poskytnúť žiadny modifikátor prístupu, takže všetky vlastnosti alebo metódy definované vo vnútri rozhrania by mali byť modifikátorom verejného prístupu, nemajú možnosť definovať iného modifikátora prístupu vo vnútri rozhrania.
  4. Koncept nadtriedy a podtriedy je dokonale vhodný pre abstraktnú triedu. Abstraktná trieda môže dostať základnú identitu podtriedy, spravidla má podobný druh objektu tejto špecifickej podtriedy. Keďže rozhranie zvyčajne definuje jeden špecifický typ periférnej aktivity triedy. Predpokladajme, že máme jedno meno rozhrania je Moveable, teraz toto rozhranie môže zdediť auto aj človek. Zatiaľ čo autá aj ľudia sú úplne iným objektom triedy a medzi nimi nie sú žiadne vzťahy.
  5. Ak má aplikácia rôznu implementáciu, ale aktivita tejto konkrétnej implementácie je takmer rovnaká, potom je lepšie použiť triedu Abstract, kde môžete definovať túto konkrétnu logiku a všetky podtriedy môžu mať vždy ľahký prístup k tej istej logike. Ako príklad možno uviesť pripojenie k databáze, ktoré bežne používajú všetky podtriedy, takže ak tento generačný a uzatvárací kód pripojenia môže obsahovať abstraktnú triedu, bude pre ktorúkoľvek podtriedu veľmi jednoduchý prístup k nej. Zatiaľ čo viac implementácií chce zdieľať iba podpis metódy, rozhranie je vždy lepšie.

Porovnávacia tabuľka C # Abstraktné vs. rozhranie

Nasleduje porovnávacia tabuľka medzi C # Abstraktné vs Rozhranie

ZÁKLAD PRE

POROVNANIE

Abstraktná triedaRozhranie
Viacnásobné dedenieJedna podtrieda môže rozšíriť iba jednu abstraktnú triedu, nie viac.Jedna podtrieda je schopná implementovať viac rozhraní, ktoré pomáhajú obnoviť nepodporujúce funkciu viacnásobného dedičstva C #.
Definícia triedyRozhranie nikdy nedefinuje žiadny konkrétny súbor definície, iba drží definíciu, ktorá sa neskôr správne implementovala podtriedou.Abstrakt môže obsahovať celé telo s definíciou a tiež môže obsahovať jedinú definíciu, ako je rozhranie, ktoré môže byť potlačené ktoroukoľvek podtriedou. Akákoľvek abstraktná trieda by mala mať aspoň jednu abstraktnú metódu, ktorá obsahuje iba podrobnosti o definícii, telo bude opísané neskôr v podtriede.
Modifikátor prístupuRozhranie nikdy nemá vo svojej definícii žiadny modifikátor prístupu. Rozhranie zvyčajne považuje všetky vlastnosti za verejné.Abstraktná trieda môže mať na svoju definíciu modifikátor prístupu. Takže všetky vlastnosti môžu byť verejné, súkromné ​​alebo chránené.
výkonZvyčajne to trvalo trochu viac času na nájdenie zodpovedajúcej metódy podtriedy.Je to trochu rýchlejšie ako rozhranie.

záver

Rozhranie aj trieda abstraktov sa používajú hlavne na inteligentné riadenie viacerých implementácií, aby sa dalo zbytočne vyhnúť zbytočnému kódu a aby bolo všetko v správnej hierarchii a štruktúre. Rozhranie bude vždy lepšie zdieľať ten istý podpis vo viacerých prípadoch. Predpokladajme, že pantaloóny majú jednu hlavnú vetvu a má tiež niekoľko vetiev na inom mieste. Teraz sa môže jeden konkrétny produkt uviesť na konkrétne miesto s jedným prístupom, zatiaľ čo na inom mieste sa uvedie na trh iným spôsobom. V takom prípade by sa logika, ak sa líši pre ten istý produkt na viacerých miestach, mohla lepšie spracovať pomocou tohto rozhrania. Teraz pre ten istý výrobok môže mať niektoré spoločné vlastnosti, ktoré je potrebné zdôrazniť v každej pobočke v čase uvedenia tohto produktu na trh. V takom prípade, aby ste sa vyhli redundancii kódu, pridajte tú istú logiku do abstraktnej triedy a môžete ju použiť vo viacerých implementáciách v rôznych odvetviach.

Odporúčaný článok

Toto bol užitočný sprievodca po rozdieloch medzi abstraktmi C # Abstraktné a Rozhranie, tu diskutujeme o porovnávaní medzi jednotlivými hlavami, čo je kľúčový rozdiel spolu s infografikou. Viac informácií nájdete aj v nasledujúcom článku -

  1. C # Rozhranie vs Abstraktná trieda
  2. Rozhranie Java vs Abstraktná trieda
  3. Rozhranie strojopisu vs trieda
  4. TypeScript Type vs Interface
  5. Modifikátory prístupu v PHP
  6. Abstraktné triedy v JavaScripte