Vypadá to jako abstraktní třídní rozhraní, ale pro začátečníky je OOP trochu zmatená. V souhrnu lze říci, že abstraktní třída je jen rozhraní, samozřejmě bez jakékoli implementace, ale mají spravedlivý podíl na rozdílech. Přestože abstraktní třídu lze provést částečně nebo úplně, rozhraní musí být úplné. Nejdůležitější rozdíl mezi nimi je v tom, že abstraktní třída může mít vlastní provedení, zatímco rozhraní je jen popis metod, které zahrnují prohlášení člena. Podívejme se blíže na teoretické aspekty obou.

Co je souhrnná třída?

Abstraktní třída je speciální typ třídy, který je základem pro jiné třídy a nelze jej přesunout. Logiku implementace abstraktní třídy poskytují odvozené třídy. Aby byla třída abstraktní, používá se „abstraktní“ modifikátor, což znamená, že některé chybějící požadavky musí být splněny ve třídě, která ji následuje. Zahrnuje jak abstraktní, tak ne abstraktní členy. Abstraktní třída je navržena tak, aby poskytovala základní funkce, které pak mohou být vyměněny a zrušeny několika odvozenými třídami. Je užitečné vyhnout se kopírování kódů. Jsou velmi podobné rozhraním, ale mají další funkce.

Rozdíl mezi abstraktní třídou a rozhraním v C #.

Co je rozhraní?

Rozhraní zase není jen třídou, která obsahuje funkční podpisy. Toto je nenaplněný zvyk. Obecně se jedná pouze o popis metod, které zahrnují prohlášení členů. Je to prázdná skořápka, která nezahrnuje implementaci jejích členů. Je to jako abstraktní základní třída, ale obsahuje pouze abstraktní členy, jako jsou metody, události, indexy, funkce a další. Třída může navíc implementovat více rozhraní, ale jedna třída může zdědit pouze jednu třídu.

Abstraktní třída a rozhraní: Rozdíl mezi abstraktní třídou a rozhraním v C #.

  1. Vícenásobné dědictví - třída může používat pouze jednu abstraktní třídu, takže vícenásobné dědictví není možné. Rozhraní zase může podporovat více dědičností, což znamená, že třída může mít libovolný počet dědictví. Abstraktní definice třídy a rozhraní v C # - Abstraktní třída je typ třídy, který může obsahovat specifikaci, která nebyla konkrétně implementována. Logiku implementace podporují odvozené třídy. Může mít abstraktní i ne abstraktní metody. Rozhraní je zase jen vzor, ​​který nemůže nic dělat. Technicky je to jen prázdná skořápka. Implementace - Abstraktní třída může zahrnovat jak definici, tak její implementaci. Tato třída je neúplná a nelze ji nainstalovat. Rozhraní může být pouze podpisem funkce bez jakéhokoli kódu. Modifikátory přístupu - Abstraktní třída může mít několik modifikátorů vstupu, jako jsou sub, funkce, funkce atd., Zatímco modifikátory rozhraní nejsou povoleny a všechny metody musí být výslovně určeny. Homogenita - abstraktní třída se používá k implementaci stejného typu, chování a stavu a rozhraní je pouze pro aplikace, které sdílejí podpisy metod. Deklarace - Abstraktní třída funguje jako základní třída pro všechny ostatní třídy, takže může deklarovat nebo použít libovolnou proměnnou, takže není dovoleno deklarovat žádné proměnné v rozhraní. Prohlášení konstruktoru - Abstraktní třída může mít prohlášení konstruktoru, zatímco rozhraní nemůže mít prohlášení konstruktoru. Primární a periferní - Abstraktní třída se používá k identifikaci identifikátoru třídy a může být použita pro objekty stejného datového typu. Rozhraní se zase používá k určení periferní schopnosti třídy. Vynikající a pozadí - Alespoň z pohledu programátora je abstraktní třída funkčnější a rozhraní je pevnější.

Souhrnná třída a rozhraní: Formulář tabulky

Shrnutí

Jaký je rozdíl mezi abstraktní třídou a rozhraním? Toto je pravděpodobně jedna z nejčastějších otázek položených v každém technickém rozhovoru. Mnoho informací o abstraktních třídách a rozhraních najdete v kterémkoli tutoriálu C #, ale rozdíl mezi nimi je velmi obtížnou součástí. Můžete kombinovat všechny informace, které můžete najít, a stále nemůžete získat dost. Koncepčně jsou oba nejdůležitější pojmy v programování a jsou stejné, ale z hlediska funkčnosti se velmi liší. Zatímco abstraktní třída je speciální typ třídy, který slouží jako základ pro jiné třídy, rozhraní na druhé straně je pouze prázdnou skořápkou s deklaracemi členů.

Reference

  • Svoboda, Jessie. Učení C #. Sebastopol: Reeilly Media, 2002. Tisk
  • Svoboda, Jessie. Učení C #. Sebastopol: Reeilly Media, 2002. Tisk
  • Lavin, Petere. Objektově orientované PHP: koncepty, metody a kód. San Francisco: No Starch Press, 2006 Tisk
  • Stellman, Andrew a Jennifer Green. Začátek prvního C #. Kolkata: Shroff Publishers and Distributors, 2008. Print
  • "Image Credit: https://stackoverflow.com/questions/2570814/when-to-use-abstract-classes"