Ein Interface (Schnittstelle) ist ein Vertrag in der Programmierung: Es deklariert Methoden, ohne sie zu implementieren. Klassen, die das Interface implementieren, müssen diese Methoden mit konkretem Code bereitstellen. Damit wird festgelegt, was ein Objekt kann, nicht wie es das tut.
Beispiel in Java
interface Fahrbar {
void fahren(); // nur deklariert, keine Implementierung
}
class Auto implements Fahrbar {
public void fahren() {
System.out.println("Auto fährt");
}
}
Beispiel in TypeScript
interface Fahrbar {
fahren(): void;
}
const auto: Fahrbar = {
fahren() { console.log("Auto fährt"); }
};
Warum Interfaces?
- Lose Kopplung: Code arbeitet gegen den Vertrag, nicht gegen eine konkrete Klasse.
- Polymorphie: Verschiedene Implementierungen (Auto, Boot, Flugzeug) sind über dasselbe Interface nutzbar.
- Testbarkeit: Abhängigkeiten lassen sich durch Test-Doubles ersetzen.
Ein Interface ist eng mit Klasse und Objekt verwandt: Klassen implementieren Interfaces, Objekte werden über den Vertrag angesprochen. Die Methoden des Interfaces empfangen Parameter und liefern Rückgabewerte; oft arbeitet es mit bestimmten Datentypen.
Im weiteren Sinne sind auch APIs Schnittstellen — sie definieren, wie Programme miteinander kommunizieren. Frameworks nutzen Interfaces intensiv, um Erweiterungspunkte festzulegen.
Sprachspezifisch: Java-Befehle, C#-Befehle, TypeScript-Befehle und JavaScript-Befehle (dort über Objektformen und Type-Checks).