o inicio da explicacao, entao andei pesquisando mais sobre o assunto e encontrei o conteudo abaixo;Uma interface no java pode representar uma superficie como o botao de liga e desliga de um equipamento eletronico. Este botao, por padrao, esta obrigatoriamente presente em todos os aparelhos de televisao.No mais comum, uma interface, e um conjunto de metodos relacionados que nao tem corpo, ou seja, sem implementacao. Se um comportamento basico de qualquer aparelho eletronico for especificado como uma interface, poderia ser como o codigo abaixo:123456package estudos; public interface Eletronico { void ligar(); void desligar();}Todos os metodos das interfaces sao implicitamente public e abstract , sendo que muitas pessoas gostam usualmente de explicitar o public. E as constantes sao public static e final.12345678package estudos; String teste = "t123"; public interface Eletronico { void ligar(); void desligar();}E a mesma coisa que:12345678package estudos; public static final String teste = "t123"; public interface Eletronico { public abstract void ligar(); public void desligar();}Se voce quiser implementar um aparelho eletronico seguindo o padrao basico de comportamento, voce tera que usar a palavra-chave implements na declaracao da classe deste aparelho:123456789101112131415161718package estudos; public class Televisao implements Eletronico { // Temos obrigatoriamete que implementar os metodos // da interface Eletronico. public void ligar() { System.out.println("Liguei a televisao"); // Aqui voce implementaria os codigos para ligar a televisao } public void desligar() { System.out.println("Desliguei a televisao"); // Aqui voce implementaria os codigos para desligar a televisao } }Como vemos no codigo, para se implementar a televisao, que e um aparelho eletronico, seguimos o padrao criado por nos para aparelhos eletronicos. Usamos a palavra-chaveimplements para implementar obrigatoriamente os metodos da interface Eletronico , fazendo uso do padrao criado. E como um contrato entre diversas classes, quase que criando ate um tipo de dado.Quando voce precisa criar funcoes que manipulam outros objetos, e necessario, as vezes, garantir que esta funcao esta realmente recebendo um objeto que tenhadeterminados atributos e metodos, os quais esta ira fazer uso. Vou mostrar um exemplo:Criamos um interface Imprimivel:1234567package estudos2; public interface Imprimivel { void imprimir(); }Vamos criar uma classe Impressora que implementa a interface Eletronico, e que so imprime objetos que implementam a interface Imprimivel.1234567891011121314151617181920212223242526272829303132333435package estudos; public class Impressora implements Eletronico { // Impressora desligada por padrao private boolean ligada = false; // Metodo para imprimir uma nota, veja o parametro // Imprimivel objImprimivel // O metodo espera um objeto que possua uma funcao imprimir() // gerou um contrato da impressora .. o metodo somente // aceita objetos que implementa a interface Imprimivel. public void imprimirNotaFiscal(Imprimivel objImprimivel){ // Verifica se a impressora esta ligada! if(this.ligada){ objImprimivel.imprimir(); // Se o objeto passado nao fosse Imprimivel } else { System.out.println("Problema: Impressora desligada!"); } } // implementamos o metodo da interface Eletronico // Ligamos a impressora .... public void ligar() { this.ligada = true; System.out.println("Impressora ligada!"); } public void desligar() { this.ligada = false; System.out.println("Impressora desligada!"); } }}Criamos um classe executavel main para fazer uma demonstracao:123456789101112131415161718192021222324252627282930package estudos; public class Main { public static void main(String[] args) { // Instanciamos uma impressora Impressora impressora1510 = new Impressora(); // Ligamos a impressora! impressora1510.ligar(); // Fazemos