C# Schnittstelle
Schnittstellen
Eine weitere Möglichkeit, Abstraktion in C# zu erreichen, sind Schnittstellen.
Eine interface
ist eine vollständig „abstrakte Klasse“, die nur abstrakte Methoden und Eigenschaften (mit leeren Körpern) enthalten kann.
Beispiel
// Schnittstelle
interface Animal
{
void animalSound(); // Schnittstellenmethode (hat keinen Körper)
void run(); // Schnittstellenmethode (hat keinen Körper)
}
Es gilt als bewährte Vorgehensweise, mit dem Buchstaben „I“ am Anfang einer Schnittstelle zu beginnen, da es Ihnen und anderen leichter fällt, sich daran zu erinnern, dass es sich um eine Schnittstelle und nicht um eine Klasse handelt.
Standardmäßig sind Mitglieder einer Schnittstelle abstract
und public
.
Hinweis: Schnittstellen können Eigenschaften und Methoden, aber keine Felder enthalten.
Um auf die Schnittstellenmethoden zugreifen zu können, muss die Schnittstelle von einer anderen Klasse „implementiert“ (sozusagen geerbt) werden. Um eine Schnittstelle zu implementieren, verwenden Sie das Symbol :
(genau wie bei der Vererbung). Der Hauptteil der Schnittstellenmethode wird von der Klasse „implement“ bereitgestellt. Beachten Sie, dass Sie beim Implementieren einer Schnittstelle nicht das Schlüsselwort override
verwenden müssen:
Beispiel
// Schnittstelle
interface IAnimal
{
void animalSound(); // Schnittstellenmethode (hat keinen Körper)
}
// Pig "implementiert" die IAnimal-Schnittstelle
class Pig : IAnimal
{
public void animalSound()
{
// Der Hauptteil von animalSound() wird hier bereitgestellt
Console.WriteLine("Das Schwein sagt: Pipi");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Erstellen Sie ein Pig-Objekt
myPig.animalSound();
}
}
Hinweise zu Schnittstellen:
- Wie abstrakte Klassen können Schnittstellen nicht zum Erstellen von Objekten verwendet werden (im obigen Beispiel ist es nicht möglich, ein „IAnimal“-Objekt in der Program-Klasse zu erstellen)
- Schnittstellenmethoden haben keinen Körper – der Körper wird von der Klasse „implement“ bereitgestellt
- Bei der Implementierung einer Schnittstelle müssen Sie alle ihre Methoden überschreiben
- Schnittstellen können Eigenschaften und Methoden enthalten, jedoch keine Felder/Variablen
- Schnittstellenmitglieder sind standardmäßig
abstract
undpublic
- Eine Schnittstelle darf keinen Konstruktor enthalten (da er nicht zum Erstellen von Objekten verwendet werden kann)
Warum und wann sollten Schnittstellen verwendet werden?
1) Um Sicherheit zu erreichen – bestimmte Details ausblenden und nur die wichtigen Details eines Objekts (Schnittstelle) anzeigen.
2) C# unterstützt keine „Mehrfachvererbung“ (eine Klasse kann nur von einer Basisklasse erben). Dies kann jedoch mit Schnittstellen erreicht werden, da die Klasse mehrere Schnittstellen implementieren kann.
Hinweis: Um mehrere Schnittstellen zu implementieren, trennen Sie diese durch ein Komma (siehe Beispiel unten).