Doporučená, 2024

Redakce Choice

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

Abstraktní třída
Abstraktní třída je ta, která je určena pouze jako základní třída jiných tříd. Modifikátor „abstraktní“ se používá k vytvoření abstraktu třídy. Abstraktní modifikátor označuje, že chybí implementace, která musí být implementována ve třídě odvozené z ní. Abstraktní třída může mít abstraktní a neaktivní členy. Abstraktní třída by měla mít alespoň jednu abstraktní metodu, jinak není použití této třídy deklarováno jako „abstraktní“.

Příklad abstraktní třídy v jazyce C #:

abstraktní třída MyCircle {abstract public int Oblast (); } Třída MyArea: MyCircle {public overide int Area () {return side * side; .....}}
1 2 3 4 5 6 7 8 9 10 11abstraktní třída MyCircle {abstract public int Oblast (); } Třída MyArea: MyCircle {public overide int Area () {return side * side; . . . . . }}

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

Rozhraní
Rozhraní obsahuje pouze deklaraci členů včetně metod, vlastností, událostí nebo indexátorů. Neobsahuje implementaci těchto členů. Třída nebo struct implementuje rozhraní, musí poskytnout 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 #:

pomocí System.Collections.Generic; pomocí System.Linq; pomocí System.Text; namespace MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {název řetězce; Console.WriteLine ("Zadejte název:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Mé jméno je:", jméno); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22pomocí systému. Sbírky. Obecný ; pomocí systému. Linq; pomocí systému. Text ; namespace MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {název řetězce; Konzola. WriteLine ("Zadejte jméno:"); name = Konzola. ReadLine (); } public void showdata () {Konzole. WriteLine ("Mé jméno je:", jméno); }}}

Jak je ukázáno ve výše uvedeném příkladu, rozhraní MyData má dvě deklarace metod getdata () a showdata (). Třída NameData, která implementuje toto rozhraní, by měla dát definici metod deklarovaných v rozhraní MyData.

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

  1. Abstraktní třída může mít abstraktní i neaktivní členy. V rozhraní jsou však všichni členové implicitně abstraktní a musí být přepsáni v odvozené třídě.
  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 definicí nebo s ní. Rozhraní však může obsahovat pouze metodu podpisu.
  4. Abstraktní třída může být plně, částečně nebo vůbec neimplementována, ale rozhraní by mělo být plně implementováno, tj. Všechny členy musí být definovány v odvozené 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.
Top