Mi az interfész a C#-ban példával
⚡ Okos összefoglaló
A C# interfésze definiál egy con-ttract, amely meghatározza, hogy egy osztálynak mely metódusokat és tulajdonságokat kell megvalósítania, anélkül, hogy magát a kódot megadná. A megvalósító osztály biztosítja a konkrét viselkedést, lehetővé téve a laza csatolást és a többszörös öröklődést a független típusok között.

Mi az interfész a C#-ban?
An Felület C#-ban egy osztállyal együtt használjuk con definiálásáratract ami egy megállapodás arról, hogy mit biztosít az osztály egy alkalmazásnak. Az interfész határozza meg, hogy milyen műveleteket hajthat végre egy osztály. Az interfész deklarálja a tulajdonságokat és a metódusokat. Az osztály feladata, hogy pontosan meghatározza, mit fog tenni a metódus.
Nézzünk egy példát egy interfészre a konzolalkalmazásunk osztályainak megváltoztatásával. Ne feledje, hogy nem fogjuk futtatni a kódot, mert semmi sem futtatható interfész segítségével.
C# interfész példa
Hozzunk létre egy interfész osztályt. Az osztály neve „Guru99Interface.” A fő osztályunk ezután kibővíti a definiált interfészt. Az összes kódot a Program.cs fájlba kell írni.
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 Magyarázat:-
Itt elmagyarázzuk a kód fontos részeit
- Először definiálunk egy interfészt, amit úgy hívunk: „Guru99Interface.” Megjegyzendő, hogy az „interfész” kulcsszó egy interfész definiálására szolgál.
- Ezután meghatározzuk a felületünk által használt metódusokat. Ebben az esetben ugyanazokat a módszereket határozzuk meg, amelyeket az összes korábbi példában használtunk. Vegye figyelembe, hogy egy interfész csak deklarálja a metódusokat. Nem határozza meg a kódot bennük.
- Ezután elkészítjük a miénket GuruA 99Tutorial osztály kiterjeszti az interfészt. Ide írjuk a kódot, amely definiálja az interfészben deklarált különféle metódusokat. Ez a fajta kódolás a következőket éri el:
- Biztosítja, hogy az osztály, GuruA 99Tutorial csak a „SetTutorial” és „GetTutorial” metódusokhoz szükséges kódot adja hozzá, semmi mást.
- Azt is biztosítja, hogy a felület úgy viselkedjen, mint egy contract. A osztály be kell tartania a szabályttract. Tehát, ha a kontratracHa a `t` azt mondja, hogy két metódusnak kell lennie, a „SetTutorial”-nak és a „GetTutorial”-nak, akkor ennek így kell lennie.
C# interfész vs. Abstract osztály
A kezdők gyakran kérdezik, hogy miben különbözik egy C# interfész egy C#-tól. abstract osztályMindkettő definiál egy hátrányttract hogy más típusok is követik, mégis más tervezési célokat szolgálnak.
A főbb különbségek az alábbiakban felsorolva vannak:
- Végrehajtás: Egy interfész csak deklarációkat tartalmaz, míg egy abstracA t óra mindkét hasizomra jótékony hatással bír.tract tagok és teljes mértékben megvalósított módszerek.
- Többszörös öröklődés: Egy osztály sok interfészt implementálhat, de csak egyet örökölhettract osztály.
- Állami: Egy hasizmottracA t osztály mezőket, konstruktorokat és tulajdonságokat tárolhat adatokkal, míg egy interfész nem képes példányállapotot tárolni.
- Hozzáférési módosítók: AbstracA t osztály tagjai lehetnek nyilvánosak, védettek vagy privátak, míg a klasszikus interfésztagok implicit módon nyilvánosak.
- Használat esetén: Használjon egy interfészt egy képesség hozzáadásához a nem kapcsolódó típusok között, és egy abstract osztály a közös kód megosztására a szorosan rokon típusok között.
Röviden, egy interfész leírja, hogy mit tud tenni egy osztály, míg egy abs.tracA t osztály a megvalósítás egy részét is meghatározhatja.
Hogyan valósítsunk meg több interfészt C#-ban
Az osztályörökléstől eltérően a C# lehetővé teszi egyetlen osztály számára, hogy egynél több interfészt valósítson meg. Így kínálja a nyelv a többszörös öröklés biztonságos formáját, anélkül a kétértelműség, ami több alaposztály egyidejű örökléséből adódik.
Több interfész implementálásához sorold fel őket az osztály neve után, és vesszővel válaszd el őket. Az osztálynak ezután definiálnia kell az összes olyan metódust, amelyet az általa megvalósított interfészekben deklarálnak.
Step 1) Deklarálj két interfészt, mindegyiket saját metódussal.
Step 2) Hozz létre egy osztályt, amely mindkét interfészt megvalósítja, vesszővel elválasztva az interfészek nevét.
Step 3) Adjon meg egy metódus törzset minden egyes interfészben deklarált taghoz.
Az alábbi példa egy olyan Document osztályt mutat be, amely egy I osztályt is megvalósít.Readable és egy IWritable felület.
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 Magyarázat:-
- Két interfészt deklarálunk, I.Readable és IWritable. Minden interfész egyetlen metódust deklarál törzs nélkül.
- A Document osztály mindkét interfészt kettőspont után, vesszővel elválasztva sorolja fel, így beleegyezik, hogy mindkét interfészt figyelembe veszi.tracts.
- Az osztály ezután definiálja a Read és Write metódusokat.ping bármelyik módszer fordítási idejű hibát okozna.
- A Main metódus létrehoz egy Document objektumot, és meghívja mindkét metódust, ezzel bizonyítva, hogy az osztály kielégíti a két interfész feltételét.
Amikor a program fut, kinyomtatja A dokumentum olvasása az első sorban és Írás a dokumentumba a második sorban. Ez a minta minden egyestracKicsi és fókuszált, ami megkönnyíti a Document osztály tesztelését és bővítését.
A C# interfészek használatának előnyei
A interfészeket széles körben használják a professzionális C# projektekben, mivel rugalmassá és könnyebben karbantarthatóvá teszik a kódot. Lehetővé teszik a bonyolultabb programozást.tract, nem pedig egy konkrét osztályba.
A főbb előnyök közé tartozik:
- Laza tengelykapcsoló: Code az interfésztől függ, nem egy adott osztálytól, így egy implementáció a hívók működésének megszakítása nélkül változhat.
- Többszörös öröklődés: Egy osztály több interfész viselkedését is örökölheti, amit a sima osztályöröklődés nem tesz lehetővé.
- Tesztelhetőség: Az interfészek egyszerűvé teszik egy valós osztály álobjektumra cserélését az egységtesztelés során.
- Függőség injekció: A keretrendszerek futásidőben injektálnak egy interfész implementációt, ami a SOLID alapelvek egyik alapgondolata.
- Következetesség: Minden implementáló osztály kénytelen ugyanazokat a tagokat biztosítani, ami az API kiszámíthatóvá tételét biztosítja.
Ezen előnyök miatt az interfészek a legtöbb modern C# tervezési minta és alkalmazáskeretrendszer középpontjában állnak.

