Une interface, déclarée avec le mot clé interface, est un type qui regroupe des méthodes abstraites dont on ne donne que la signature (pas le code).
Le rôle d’une interface est de proposer un « lexique » de méthodes qui seront ensuite implémentées par des classes, grâce au mot clé implements.
Une interface ne contient donc pas obligatoirement d’attribut.
La notion d’interface est très proche de celle de classe abstraite. La différence essentielle entre ces deux notions (en Java et en UML) est qu’une classe peut implémenter plusieurs interfaces, alors qu’elle ne peut hériter que d’une seule autre classe. Ainsi en Java, les interfaces sont l’une des solutions au problème de l’inexistence de l’héritage multiple.