In der objekt-orientierten Programmierwelt dienen Interfaces in Essenz als Vorlagen oder Kurzfassungen von Klassen. Sie bieten eine Schnittstelle für Funktionen, welche von Klasse zu Klassen sich in der Umsetzung unterscheiden kann, aber von der Signatur her (bzw. Funktionsname + Rückgabewert + Parameterliste) identisch sind.
In der Regel kommen Interfaces zum Zug sobald mehrere Klassen sich eine bestimmte Art verhalten müssen.
Somit sind Interfaces "verhält sich wie" Assoziationen.
public interface Movable {
void move();
}
class Dog implements Movable {
...
@override
public void move() {
legs.forEach((leg) -> leg.step());
}
}
class Fish implements Movable {
...
@override
public void move() {
fin.swing();
}
}