In questo caso la logica principale è separare la dichiarazione di intenti dall'implementazione: l'interfaccia spesso serve a dire al mondo intero COSA fai, non c'è bisogno che il mondo intero sappia COME lo fai. Spesso usi appunto l'interfaccia per creare i documenti che mandi al mondo esterno (hai presente quello che succedeva inizialmente con i web service e il wsdl? oggi si possono usare anche le annotation per creare il wsdl, ma inizialmente il wsld partiva dall'interfaccia del servizio)

L'interfaccia inoltre è un ottimo metodo per ottenere l'ereditarietà multipla in java (cosa impossibile estendendo la classe).