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

Abstraktní třída

Abstraktní třída je taková, která je zamýšlena pouze jako základní třída jiných tříd. „Abstrakt“ modifikátor se používá k tomu, aby se třída stala abstraktem. Abstraktní modifikátor naznačuje, že existuje nějaká chybějící implementace, která musí být implementována do třídy, která je z ní odvozena. Abstraktní třída může mít abstraktní a ne abstraktní členy. Abstraktní třída by měla mít alespoň jednu abstraktní metodu, jinak není možné tuto třídu prohlásit za „abstraktní“.

Příklad abstraktní třídy v C #:
Jak je ukázáno ve výše uvedeném příkladu, abstraktní metoda „Area“ uvnitř třídy MyCircle je v odvozené třídě MyArea přepsána..

Rozhraní

Rozhraní obsahuje pouze deklaraci členů včetně metod, vlastností, událostí nebo indexů. Neobsahuje implementaci těchto členů. Třída nebo struktura implementuje rozhraní, musí poskytovat definici metod deklarovaných v rozhraní. To znamená, že rozhraní poskytuje standardní strukturu, kterou musí odvozená třída následovat.

Příklad rozhraní v C #:
Jak je ukázáno ve výše uvedeném příkladu, rozhraní MyData má dvě metody deklarace getdata () a showdata (). Třída NameData, která implementuje toto rozhraní, by měla definovat metody deklarované v rozhraní MyData.

Rozdíl mezi abstraktní třídou a rozhraním

  1. Abstraktní třída může mít členy abstraktní i ne abstraktní. Ale v rozhraní jsou všichni členové implicitně abstraktní a musí být v odvozené třídě přepsáni.
  2. Třída může zdědit několik rozhraní, ale pouze jednu abstraktní třídu.
  3. Abstraktní třída může obsahovat metody s nebo s definicí. Rozhraní však může obsahovat pouze podpis metody.
  4. Abstraktní třída může být plně, částečně nebo vůbec implementována, ale rozhraní by mělo být plně implementováno, tj. Všichni členové musí být definováni v odvozující třídě.
  5. Rozhraní nemůže obsahovat modifikátory přístupu, ale abstraktní třída jej může mít pro funkce, vlastnosti nebo události.
TO