Le interfacce, come le classi astratte, sono delle classi speciali che non possono essere istanziate ma soltanto implementate.
Praticamente esse delineano la struttura di una classe. La dichiarazione di un’interfaccia è simile a quella di una classe, ma include soltanto metodi (privi di implementazione) e costanti

quindi si vede che ho implementato solo dei metodi.
Poi in questa classe implemento i metodi precedenti:

in quest’ulteriore classe implemento nuovamente la stessa interfaccia:


Inoltre, dato che entrambe le classi implementano l’intefaccia IUser, è possibile tramite i metodi setPartner di ognuna, impostare un partner di tipo UserA ad un’istanza di tipo UserB e vice versa