C # Abstrakt vs Rozhraní - Naučte se nejdůležitější nejdůležitější rozdíly

Obsah:

Anonim

Rozdíly mezi C # Abstrakt vs Rozhraní

Abstraktní třída i Interface jsou velmi důležitými metodologiemi, které je třeba se naučit pro pochopení jakéhokoli objektově orientovaného programovacího školení. Normálně jsou oba velmi matoucí pro počáteční začátek žáka v objektově orientovaném programování. Pokud definujeme jednu abstraktní třídu, ale neimplementujeme nic, pak to absolutně vypadá jako Interface, nikdo nebude schopen pochopit jakýkoli rozdíl mezi nimi než deklaraci. Mezi třídou Interface a Abstract však existuje mnoho rozdílů a podobností.

Abstraktní třída je jednoduchá třída, která se definuje jako abstraktní a nemohla být vytvořena instancí. Abstraktní třídu je třeba rozšířit o některé podtřídy, aby bylo možné využívat všechny funkce nebo užitečnost této konkrétní nadřazené třídy nebo abstraktní třídy. Ve skutečnosti pomáhá udržovat správnou hierarchii nadtříd nebo podtříd. Více podtříd může používat stejný název funkčnosti s různými definicemi. Ve skutečnosti zajišťuje, že aplikace by se měla řídit nějakou konkrétní hierarchií nebo standardy, které přenášejí aplikaci správnou vysvětlitelnou funkčnost.

Rozhraní rozhodně není třída, je to jako entita, která je definována jedním konkrétním slovem Rozhraní. Rozhraní nikdy nedefinovalo žádnou definici, zcela záleží na konkrétní deklaraci, která by měla zdědit více tříd současně. Více tříd může definovat vícenásobnou definici té jednotlivé deklarace jednoho specifického rozhraní. Drží také stejný druh zařízení jako třída Abstract, hlavně pomáhá udržovat stejnou hierarchii podtříd s odlišnou definicí. Hlavní rozdíl mezi abstraktní třídou a rozhraním je však rozšířen o několik abstraktních tříd, ale není možné zdědit více rozhraní. Protože C # nepodporuje vícenásobné dědictví, takže stejný druh funkčnosti poskytuje rozhraní.

Srovnání hlava-hlava mezi C # Abstrakt vs Rozhraní (infografika)

Níže je uvedeno nejlepší srovnání mezi C # Abstract vs Interface

Klíčové rozdíly mezi C # Abstrakt vs Rozhraní

Některé klíčové rozdíly jsou vysvětleny níže mezi C # Abstrakt vs. Rozhraní

  1. Abstraktní třída i Interface skutečně používají jedna nebo více podtříd. Hlavním omezením je, že jedna podtřída nemůže rozšířit více abstraktních tříd, což znamená, že více dědic nemůže být možné, zatímco podtřída může zdědit více rozhraní najednou.
  2. Abstrakt může držet tělo s definicí nebo pouze definicí metody. Může být možné podtřída, která rozšiřuje tuto abstraktní třídu s tělovou metodou a také může vysvětlovat tělesné podrobnosti jakékoli konkrétní definice abstraktní metody, kterou lze přepsat. Abstraktní třída by měla mít alespoň jednu abstraktní metodu (znamená jedinou definici metody bez těla). Rozhraní má pouze definici metody, nemělo by obsahovat žádné podrobnosti o těle metody definování. Jedna podtřída dědičnost, která propojuje a využívá ty, které nedefinují metodu dynamickým zadáním správných údajů o těle pro více podtříd.
  3. Abstraktní třída může mít různé modifikátory přístupu, jako jsou veřejné, soukromé nebo chráněné, takže jakákoli metoda nebo vlastnosti uvnitř abstraktní třídy mohou definovat různé modifikátory přístupu. Vzhledem k tomu, že rozhraní nemůže poskytnout žádný modifikátor přístupu, takže všechny vlastnosti nebo metody definované uvnitř rozhraní by měly být modifikátory veřejného přístupu, nemají možnost definovat jiného modifikátoru přístupu uvnitř rozhraní.
  4. Koncept vyšší třídy a podtřídy je pro abstraktní třídu naprosto dokonalý. Abstraktní třídě může být dána základní identita podtřídy, obvykle má podobný druh objektu této specifické podtřídy. Vzhledem k tomu, že rozhraní normálně definuje jeden specifický typ periferní aktivity třídy. Předpokládejme, že máme jedno jméno rozhraní je Moveable, nyní toto rozhraní může být zděděno autem i člověkem. Zatímco auta i lidé jsou zcela odlišným objektem třídy a mezi nimi nemají žádný vztah.
  5. Pokud má aplikace různou implementaci, ale činnost této konkrétní implementace je téměř stejná, pak je lepší použít třídu Abstract, kde můžete definovat, že konkrétní logika a všechny podtřídy mohou pokaždé snadno přistupovat ke stejné logice. Jako příklad databázové konektivity, které běžně používají všechny podtřídy, takže pokud tento generační a uzavírací kód konektivity může pojmout abstraktní třídu, bude pro každou podtřídu velmi snadné získat stejný přístup. Zatímco více implementací chce sdílet pouze podpis metody, Interface je vždy lepší.

Srovnávací tabulka C # Abstrakt vs Rozhraní

Následuje srovnávací tabulka mezi C # Abstrakt vs Rozhraní

ZÁKLAD PRO

SROVNÁNÍ

Abstraktní třídaRozhraní
Více dědíJedna podtřída může rozšířit pouze jednu abstraktní třídu, ne více.Jedna podtřída je schopna implementovat více rozhraní, která pomáhají zotavovat nepodporující funkci vícenásobné dědičnosti C #.
Definice třídyRozhraní nikdy nedefinuje žádné konkrétní tělo definice, pouze drží definici, která byla později řádkem implementována správně.Abstrakt může pojmout celé tělo s definicí a také může obsahovat jedinou definici, jako je rozhraní, které může být přepsáno jakoukoli podtřídou. Jakákoli abstraktní třída by měla mít alespoň jednu abstraktní metodu, která obsahuje pouze podrobnosti o definici, tělo bude popsáno později v podtřídě.
Modifikátor přístupuRozhraní nikdy nemá ve své definici žádný modifikátor přístupu. Rozhraní obvykle považuje všechny vlastnosti za veřejné.Abstraktní třída může mít modifikátor přístupu pro její definici. Takže všechny vlastnosti mohou být veřejné, soukromé nebo chráněné.
VýkonObvykle trvalo trochu déle, než zjistil odpovídající metodu podtřídy.Je o něco rychlejší než rozhraní.

Závěr

Rozhraní i třída abstrakt se používají hlavně pro inteligentní správu více implementací, takže se lze snadno vyhnout nadbytečnému kódu a vše je ve správné hierarchii a struktuře. Rozhraní bude vždy lepší pro sdílení stejného podpisu ve více případech. Předpokládejme, že Pantaloons mají jednu hlavní větev a má také více poboček na jiném místě. Nyní může být jeden konkrétní produkt spuštěn na konkrétním místě s jedním přístupem, zatímco na jiném místě je uveden na trh jiným způsobem. V takovém případě by se logika měla lišit pro stejný produkt na více místech, tento druh logiky může lépe zpracovat rozhraní. Nyní pro stejný produkt může mít některé společné vlastnosti, které musí být zvýrazněny v každé pobočce v době uvedení produktu na trh. V takovém případě, abyste se vyhnuli redundanci kódu, přidejte stejnou logiku do abstraktní třídy a můžete ji použít ve více implementacích v různých větvích.

Doporučený článek

Toto byl užitečný průvodce rozdíly mezi C # Abstrakt vs Rozhraní zde jsme diskutovat srovnání hlava-hlava, klíčový rozdíl spolu s infografiky. Další informace naleznete také v následujícím článku -

  1. C # Rozhraní vs Abstraktní třídy
  2. Rozhraní Java vs abstraktní třída
  3. Rozhraní strojopisu vs třída
  4. TypeScript Type vs Interface
  5. Přístup modifikátory v PHP
  6. Abstraktní třídy v JavaScriptu