Ein Interface legt fest, welche Methoden eine Klasse haben muss, und sagt nichts darüber, wie sie sie ausführt.
- Interface
Eine Vereinbarung, welche Methoden eine Klasse anbieten muss, ohne festzulegen, wie sie arbeiten.
Beispiel: „Das Interface verlangt eine Methode zum Versenden; ob per Mail oder per SMS, bleibt der Klasse überlassen.“Auch: Schnittstelle, Vertrag.
Abgrenzung zur API: Beide heißen auf Deutsch Schnittstelle. Das Interface ist ein Sprachmittel innerhalb eines Programms, eine API die Schnittstelle zwischen zwei Systemen.
Der Vertrag ohne Inhalt
Ein Interface nennt Namen und Form der Methoden, mehr nicht. Eine Klasse, die es erfüllt, verpflichtet sich, genau diese Methoden anzubieten. Wie sie das tut, ist ihre Sache.
Der Gewinn liegt im Austauschen. Code, der gegen das Interface geschrieben ist, funktioniert mit jeder Klasse, die es erfüllt. Ein Versandweg lässt sich dann gegen einen anderen tauschen, ohne dass die aufrufende Stelle davon erfährt.
Der Unterschied zur Vererbung
Bei der Vererbung wird Verhalten übernommen, beim Interface nur eine Zusage. Eine Klasse kann von genau einer Oberklasse erben, aber beliebig viele Interfaces erfüllen.
Deshalb gilt die Empfehlung, lieber gegen Interfaces zu schreiben als gegen konkrete Klassen. Das hält die Teile eines Programms auseinander, und genau daran hängt, wie leicht sich später etwas ersetzen lässt.
In JavaScript und TypeScript
JavaScript kennt kein Interface als Sprachmittel. Dort zählt allein, ob ein Objekt die erwarteten Methoden hat; geprüft wird erst beim Aufruf.
TypeScript trägt Interfaces nach und prüft sie beim Übersetzen. Sie verschwinden danach vollständig, weil der ausgelieferte Code wieder reines JavaScript ist.