Muitas vezes, ao aprendermos interfaces, achamos que são códigos que não servem para nada, já que não é feita a implementação propriamente dita dos métodos. Entretanto a interface nos possibilita um nível de abstração maior, tornando o código muito mais flexível, pois podemos mudar a implementação sem maiores impactos no restante do código, desde que mantenhamos a implementação das interfaces intactas.
O exemplo a seguir ilustra isso mostrando o uso de interfaces como parâmetros de um método:
public class Principal { public static void mostrar(Forma form){ form.mostrar(); } public static void main(String[] args) { Retangulo figura = new Retangulo(5,4); mostrar(figura); } }
Perceba que o método mostrar da classe Principal recebe como argumento qualquer objeto que implemente a interface Forma, ou seja, não é necessário que o objeto seja herdado de uma classe específica e nem há qualquer restrição em relação a forma como os métodos são implementados. Obviamente, deve-se ter um cuidado para que o método ou função que tem interfaces como parâmetros utilizem apenas o que foi definido na interface em sua implementação.