Olá Pessoal, tudo bom?
O post de hoje irá deixar alguns pontos relacionados a quando usar uma interface. Confira o post a seguir…
Para começar vamos realizar algumas definições:
Definições…
Uma interface é um tipo pré definido na Linguagem Java, assim como o tipoEnum. Para se declarar uma interface é necesário utilizar a palavra chave interface ao invés da palavra chave class como mostra o código abaixo:
1 2 3 |
public interface InterfaceExemplo { //Algum código aqui } |
Uma interface pode possuir zero ou mais declarações de métodos. Esses métodos podem possuir somente a visibilidade public. Uma declaração de método não possui um “corpo”, uma implementação. Ao invés de usar as chaves, deverá ser utilizado um ponto e virgula ao fim do cabeçalho do método, como mostra as linhas 3 e 5:
1 2 3 4 5 6 7 8 9 |
public interface InterfaceExemplo { public abstract void metodoAbstrato1(String nome); public abstract String metodoAbstrato2(int valor); //Algum código aqui } |
Lembre-se que uma interface sem métodos declarados não é inútil, você pode utilizar esta como instrumento muito importante para polimorfismo. Não acredita? Pense na interface java.io.Serializable ((API java.io.Serializable – link))
Para o tipo Interface, as palavras public e abstract são redundantes, ou seja, é possível remover da declaração dos métodos, assim o código acima ficará assim:
1 2 3 4 5 6 7 8 9 |
public interface InterfaceExemplo { void metodoAbstrato1(String nome); String metodoAbstrato2(int valor); //Algum código aqui } |
Uma interface não pode ser instanciada, mas ela pode ser implementada em uma Classe ou Enum. Ao implementar essa interface o tipo deverá prover implementações para todos os métodos declarados na interface, abaixo segue exemplo de uma classe e um enum que implementam a InterfaceExemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class ClasseImplementaInterfaceExemplo implements InterfaceExemplo { public void metodoAbstrato1(String nome){ //realiza alguma operacao aqui } public String metodoAbstrato2(int valor){ //realiza alguma operacao aqui } //Algum código aqui } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public enum EnumImplementaInterfaceExemplo implements InterfaceExemplo { public void metodoAbstrato1(String nome){ //realiza alguma operacao aqui } public String metodoAbstrato2(int valor){ //realiza alguma operacao aqui } //Algum código aqui } |
Caso isso não seja satisfeito, a classe deverá ser declarada abstrata, para que uma filha desta nova classe implemente os métodos faltantes.
1 2 3 4 5 6 7 8 9 |
public abstract class ClasseImplementaInterfaceExemplo implements InterfaceExemplo { public void metodoAbstrato1(String nome){ //realiza alguma operacao aqui } //Algum código aqui } |
1 2 3 4 5 6 7 8 9 |
public class FilhaClasseImplementaInterfaceExemplo extends ClasseImplementaInterfaceExemplo { public String metodoAbstrato2(int valor){ //realiza alguma operacao aqui } //Algum código aqui } |
Lembrando que ao realizar a herança dessa classe abstrata é possível realizar override de métodos já declarados nas classes superiores.
Quando utilizar…
Utilizar interfaces se uma das situações abaixo ocorrer:
- Compartilhar código entre várias classes não relacionadas, a exemplo das interfaces java.lang.Comparable ((API java.lang.Comparable – link)) e java.lang.Cloneable ((API java.lang.Cloneable – link)) em que muitas classes implementam estas mas não possui relação entre si.
- Especificar o comportamento de um tipo e não quem implementa esse comportamento.
- Implementar múltiplas “heranças”. Pois é possível que uma classe implemente várias interfaces.
Quando não utilizar…
Não utilizar interfaces a situação abaixo ocorrer:
- É necessário uma implementação padrão de um método.
finnaly{
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply