Interfaces kann man als Vertrag verstehen, den eine Klasse, die von diesem Interface erbt, erfüllen muss. D.h., dass das Interface die Struktur einer Klasse vorgibt.
Folgende Elemente können in einem Interface vorgeschrieben werden:
- Methoden
- Eigenschaften
- Ereignisse (Events)
- Indexer
Bsp. für die Definition eines Interfaces:
interface ITier { // Properties string Gender {get; set;} int Age {get; set;} // Methods void eat(); void drink(); }
Innerhalb eines Interfaces werden keine Zugriffs-Modifizierer gesetzt. Das erfolgt erst bei der Implementierung in der davon abgeleiteten Klasse. Auch die Funktionen besitzen noch keinen Code, sondern sind nur Platzhalter für die Funktionen, die in der abgeleiteten Klasse implementiert werden müssen.
Zur besseren Identifikation beginnt der Name eines Interfaces immer mit einem großen I.
Neben dem Effekt, dass man mit Interfaces die Gestalt von Klassen vorgeben kann, kann man sie auch nutzen, um Klassen zusammen zu fassen.
So lässt sich z.B. ein Array vom Typ Interface erstellen, das als Elemente Objekte beinhaltet, deren Klassen das entsprechende Interface implementieren.