Co je rozhraní v C# s příkladem
⚡ Chytré shrnutí
Rozhraní v C# definuje contract, který specifikuje, které metody a vlastnosti musí třída implementovat, aniž by poskytoval skutečný kód. Implementující třída poskytuje konkrétní chování, což umožňuje volné propojení a vícenásobnou dědičnost napříč nesouvisejícími typy.

Co je rozhraní v C#?
An Rozhraní V C# se používá spolu s třídou k definování contract, což je dohoda o tom, co bude třída poskytovat aplikaci. Rozhraní definuje, jaké operace může třída provádět. Rozhraní deklaruje vlastnosti a metody. Je na třídě, aby přesně definovala, co bude metoda dělat.
Podívejme se na příklad rozhraní změnou tříd v naší konzolové aplikaci. Všimněte si, že nebudeme spouštět kód, protože neexistuje nic, co by bylo možné spustit pomocí rozhraní.
Příklad rozhraní C#
Vytvořme třídu rozhraní. Třída se bude jmenovat „Guru„99Interface.“ Naše hlavní třída poté rozšíří definované rozhraní. Veškerý kód je třeba napsat do souboru Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Vysvětlení:-
Zde vysvětlíme důležité části kódu
- Nejprve definujeme rozhraní s názvem „Guru99Rozhraní.“ Všimněte si, že klíčové slovo „rozhraní“ se používá k definování rozhraní.
- Dále definujeme metody, které bude naše rozhraní používat. V tomto případě definujeme stejné metody, jaké byly použity ve všech předchozích příkladech. Všimněte si, že rozhraní pouze deklaruje metody. Nedefinuje v nich kód.
- Pak si uděláme naše GuruTřída 99Tutorial rozšiřuje rozhraní. Zde píšeme kód, který definuje různé metody deklarované v rozhraní. Tento typ kódování dosahuje následujících výsledků.
- Zajišťuje, že třída, Guru99Tutorial přidává pouze kód, který je nezbytný pro metody „SetTutorial“ a „GetTutorial“ a nic dalšího.
- Také zajišťuje, že se rozhraní chová jako podvodník.tract. The třída musí dodržovat podmínkytract. Takže pokud podvodtracPokud t říká, že by měl mít dvě metody s názvem „SetTutorial“ a „GetTutorial“, pak by to tak mělo být.
Rozhraní C# vs. AbstracTřída t
Častou otázkou pro začátečníky je, jak se rozhraní C# liší od abstractřída TOba definují podvod.trackteré ostatní typy následují, přesto slouží jiným designovým cílům.
Klíčové rozdíly jsou uvedeny níže:
- Realizace: Rozhraní obsahuje pouze deklarace, zatímco abstracTřída t může poskytnout jak břišní svalytract členů a plně implementovaných metod.
- Vícenásobná dědičnost: Třída může implementovat mnoho rozhraní, ale může dědit pouze jeden abs.tractřída t.
- Stát: Břišní svalytracTřída t může obsahovat pole, konstruktory a vlastnosti s daty, zatímco rozhraní nemůže ukládat stav instance.
- Modifikátory přístupu: AbstracČlenové třídy t mohou být veřejní, chránění nebo privátní, zatímco členové klasického rozhraní jsou implicitně veřejní.
- Použití: Použijte rozhraní k přidání funkce napříč nesouvisejícími typy a abstractřída t pro sdílení společného kódu mezi blízce souvisejícími typy.
Stručně řečeno, rozhraní popisuje, co třída dokáže, zatímco abstracTřída t může také definovat část toho, jak se to dělá.
Jak implementovat více rozhraní v C#
Na rozdíl od dědění tříd umožňuje jazyk C# implementovat více než jedno rozhraní v rámci jedné třídy. Tímto způsobem jazyk nabízí bezpečnou formu vícenásobné dědičnosti bez nejednoznačnosti, která vzniká při dědění několika základních tříd najednou.
Chcete-li implementovat více rozhraní, uveďte je za názvem třídy a oddělte každé z nich čárkou. Třída pak musí definovat každou metodu deklarovanou v každém rozhraní, které implementuje.
Krok 1) Deklarujte dvě rozhraní, každé s vlastní metodou.
Krok 2) Vytvořte třídu, která implementuje obě rozhraní, a oddělte názvy rozhraní čárkou.
Krok 3) Pro každého člena deklarovaného v každém rozhraní zadejte tělo metody.
Níže uvedený příklad ukazuje třídu Document, která implementuje jak IReadable a rozhraní IWritable.
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code Vysvětlení:-
- Deklarujeme dvě rozhraní, I.Readable a IWritable. Každé rozhraní deklaruje jednu metodu bez těla.
- Třída Document uvádí obě rozhraní za dvojtečkou, oddělená čárkou, takže souhlasí s respektováním obou con.tracts.
- Třída poté definuje metody Read a Write. Přeskočit.ping obě metody by způsobily chybu při kompilaci.
- Metoda Main vytvoří objekt Document a volá obě metody, čímž dokáží, že třída splňuje obě rozhraní.
Když program běží, vypíše Čtení dokumentu na prvním řádku a Zápis do dokumentu na druhém řádku. Tento vzor udržuje každý contracJe malá a zaměřená na konkrétní třídu, což usnadňuje testování a rozšiřování třídy Document.
Výhody použití rozhraní v C#
Rozhraní se široce používají v profesionálních projektech v C#, protože usnadňují údržbu kódu a zvyšují jeho flexibilitu. Umožňují programovat s ohledem na...tract spíše než ke konkrétní třídě.
Mezi hlavní výhody patří:
- Volné spojení: Code závisí na rozhraní, nikoli na konkrétní třídě, takže implementace se může změnit bez narušení volajících metod.
- Vícenásobná dědičnost: Třída může dědit chování z několika rozhraní, což prostá dědičnost tříd neumožňuje.
- Testovatelnost: Rozhraní usnadňují výměnu skutečné třídy za falešný objekt během jednotkového testování.
- Vkládání závislostí: Frameworky vkládají implementaci rozhraní za běhu, což je základní myšlenka, na které stojí principy SOLID.
- Konzistence: Každá implementující třída je nucena poskytovat stejnou sadu členů, což udržuje API předvídatelné.
Díky těmto výhodám jsou rozhraní srdcem většiny moderních návrhových vzorů a aplikačních frameworků v C#.

