C#-Schnittstelle
C#-Schnittstelle
In diesem Tutorial lernen wir die C#-Schnittstelle anhand von Beispielen kennen.
In C# ähnelt eine Schnittstelle einer abstrakten Klasse. Im Gegensatz zu abstrakten Klassen sind jedoch alle Methoden einer Schnittstelle vollständig abstrakt (Methode ohne Körper).
Wir verwenden den interface
Schlüsselwort zum Erstellen einer Schnittstelle. Zum Beispiel
interface IPolygon {
// method without body
void calculateArea();
}
Hier,
- IPolygon ist der Name der Schnittstelle.
- Nach Konvention beginnt Interface mit I, sodass wir es anhand seines Namens identifizieren können.
- Wir können keine Zugriffsmodifikatoren innerhalb einer Schnittstelle verwenden.
- Alle Mitglieder einer Schnittstelle sind standardmäßig öffentlich.
- Ein Interface erlaubt keine Felder.
Eine Schnittstelle implementieren
Wir können keine Objekte einer Schnittstelle erstellen. Um eine Schnittstelle zu verwenden, müssen andere Klassen sie implementieren. Wie bei der C#-Vererbung verwenden wir :
Symbol zum Implementieren einer Schnittstelle. Zum Beispiel
using System;
namespace CsharpInterface {
interface IPolygon {
// method without body
void calculateArea(int l, int b);
}
class Rectangle : IPolygon {
// implementation of methods inside interface
public void calculateArea(int l, int b) {
int area = l * b;
Console.WriteLine("Area of Rectangle: " + area);
}
}
class Program {
static void Main (string [] args) {
Rectangle r1 = new Rectangle();
r1.calculateArea(100, 200);
}
}
}
Ausgabe
Area of Rectangle: 20000
Im obigen Beispiel haben wir eine Schnittstelle namens IPolygon erstellt . Die Schnittstelle enthält eine Methode calculateArea(int a, int b)
ohne Implementierung.
Hier das Rechteck Klasse implementiert IPolygon . Und stellt die Implementierung von calculateArea(int a, int b)
bereit Methode.
Hinweis :Wir müssen die Implementierung aller Interface-Methoden innerhalb der Klasse bereitstellen, die es implementiert.
Mehrere Schnittstellen implementieren
Im Gegensatz zur Vererbung kann eine Klasse mehrere Schnittstellen implementieren. Zum Beispiel
using System;
namespace CsharpInterface {
interface IPolygon {
// method without body
void calculateArea(int a, int b);
}
interface IColor {
void getColor();
}
// implements two interface
class Rectangle : IPolygon, IColor {
// implementation of IPolygon interface
public void calculateArea(int a, int b) {
int area = a * b;
Console.WriteLine("Area of Rectangle: " + area);
}
// implementation of IColor interface
public void getColor() {
Console.WriteLine("Red Rectangle");
}
}
class Program {
static void Main (string [] args) {
Rectangle r1 = new Rectangle();
r1.calculateArea(100, 200);
r1.getColor();
}
}
}
Ausgabe
Area of Rectangle: 20000 Red Rectangle
Im obigen Beispiel haben wir zwei Schnittstellen, IPolygon und IColor .
class Rectangle : IPolygon, IColor {
…
}
Wir haben beide Schnittstellen im Rectangle implementiert Klasse durch ,
getrennt .
Nun, Rectangle
muss die Methode beider Interfaces implementieren.
Referenzvariable einer Schnittstelle verwenden
Wir können die Referenzvariable einer Schnittstelle verwenden. Zum Beispiel
using System;
namespace CsharpInterface {
interface IPolygon {
// method without body
void calculateArea(int l, int b);
}
class Rectangle : IPolygon {
// implementation of methods inside interface
public void calculateArea(int l, int b) {
int area = l * b;
Console.WriteLine("Area of Rectangle: " + area);
}
}
class Program {
static void Main (string [] args) {
// using reference variable of interface
IPolygon r1 = new Rectangle();
r1.calculateArea(100, 200);
}
}
}
Ausgabe
Area of Rectangle: 20000
Im obigen Beispiel haben wir eine Schnittstelle namens IPolygon erstellt . Die Schnittstelle enthält eine Methode calculateArea(int l, int b)
ohne Implementierung.
IPolygon r1 = new Rectangle();
Beachten Sie, dass wir die Referenzvariable der Schnittstelle IPolygon verwendet haben . Es zeigt auf die Klasse Rectangle das es implementiert.
Obwohl wir keine Objekte einer Schnittstelle erstellen können, können wir dennoch die Referenzvariable der Schnittstelle verwenden, die auf ihre implementierte Klasse zeigt.
Praktisches Beispiel einer Schnittstelle
Sehen wir uns ein praktischeres Beispiel für die C#-Schnittstelle an.
using System;
namespace CsharpInterface {
interface IPolygon {
// method without body
void calculateArea();
}
// implements interface
class Rectangle : IPolygon {
// implementation of IPolygon interface
public void calculateArea() {
int l = 30;
int b = 90;
int area = l * b;
Console.WriteLine("Area of Rectangle: " + area);
}
}
class Square : IPolygon {
// implementation of IPolygon interface
public void calculateArea() {
int l = 30;
int area = l * l;
Console.WriteLine("Area of Square: " + area);
}
}
class Program {
static void Main (string [] args) {
Rectangle r1 = new Rectangle();
r1.calculateArea();
Square s1 = new Square();
s1.calculateArea();
}
}
}
Ausgabe
Area of Rectangle: 2700 Area of Square: 900
Im obigen Programm haben wir eine Schnittstelle namens IPolygon erstellt . Es hat eine abstrakte Methode calculateArea()
.
Wir haben zwei Klassen Square und Rechteck die das IPolygon implementieren Schnittstelle.
Die Regel zur Berechnung der Fläche ist für jedes Polygon anders. Daher calculateArea()
ist ohne Implementierung enthalten.
Jede Klasse, die IPolygon implementiert muss eine Implementierung von calculateArea()
bereitstellen . Daher Implementierung der Methode in der Klasse Rectangle ist unabhängig von der Methode in der Klasse Square .
Vorteile der C#-Schnittstelle
Nachdem wir nun wissen, was Schnittstellen sind, lernen wir, warum Schnittstellen in C# verwendet werden.
- Ähnlich wie abstrakte Klassen helfen uns Schnittstellen dabei, Abstraktion in C# zu erreichen .
Hier die MethodecalculateArea()
innerhalb der Schnittstelle, hat keinen Körper. Daher verbirgt es die Implementierungsdetails der Methode.
- Schnittstellen stellen Spezifikationen bereit dass eine Klasse (die es implementiert) folgen muss.
In unserem vorherigen Beispiel haben wircalculateArea()
verwendet als Spezifikation innerhalb der Schnittstelle IPolygon . Das ist so, als würde man eine Regel aufstellen, dass wir die Fläche jedes Polygons berechnen sollten.
Jetzt jede Klasse, die das IPolygon implementiert -Schnittstelle muss eine Implementierung für calculateArea() bereitstellen Methode.
- Schnittstellen werden verwendet, um Mehrfachvererbung in C# zu erreichen.
- Schnittstellen bieten eine lose Kopplung (hat keine oder die geringste Auswirkung auf andere Teile des Codes, wenn wir einen Teil eines Codes ändern).
Wenn wir in unserem vorherigen Beispiel die Implementierung voncalculateArea()
ändern im Quadrat Klasse wirkt es sich nicht auf das Rectangle aus Klasse.
C Sprache