Um pouco sobre Interfaces

Quando você criar uma interface, estará definindo um contrato com o que a classe pode fazer, sem mencionar nada sobre como a classe o fará. Uma interface é um contrato. Você poderia escrever uma interface Carro. Qualquer tipo de classe que implementar essa interface precisa concordar em escrever o código dos métodos Correr() e setCorrerFabrica().

As interfaces podem ser implementadas por qualquer classe, de qualquer árvore de herança. Isso permitirá que você use classes radicalmente diferentes e forneça a elas uma caracterisitica em comum.

Uma interface equivale a uma classe 100% abstrata e como uma classe abstrata a interface define métodos abstratos como a forma abaixo:

abstract void Carro();

Nas classes abstratas, você tanto pode definir métodos abstratos como métodos não abstratos, contudo na interface todos os métodos serão abstratos. Outro ponto em que diferem as classes abstratas das interfaces é quanto a flexibilidade em como os métodos e variáveis definidos na interface são declarados. Abaixo a lista de regras:

  • Todos os métodos de interface são implicitamente public e abstract. Em outras palavras, você não precisa digitar realmente os modificadores public e abstract.
  • Todas as variáveis definidas em uma interface devem ser public, static e final.
  • Os métodos de interface não podem ser estáticos.
  • Já que os métodos de interface são abstract não podem ser marcados como final.
  • Uma interface pode estenter uma ou mais interfaces diferentes.
  • Uma interface não pode estender nada que não seja outra interface.
  • Uma interface não pode implementar outra interface ou classe.
  • Uma interface deve ser declarada com a palavra chave Interface.
  • Os tipos de interface podem ser usados polimoficamente.

Digitar o modificador abstract é redundante, as duas situações abaixos são idênticas.

public abstract interface Carro{}

public interface Carro{}

 

Fonte: Guia de Estudo SCJP
Autor Kathy Sierra e Bert Bates

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s