Declaração de Interface


Uma interface define o que uma classe pode fazer sem dizer nada como a classe irá fazer. Qualquer classe que implementar uma interface deverá implementar os métodos definidos por ela.
Interfaces podem ser implementadas por qualquer classe, de qualquer árvore de herança. São classes 100% abstratas, contendo somente métodos abstratos (isso quer dizer que todos os métodos terminam com ponto-e-vírgula no lugar das chaves {} ).
Regras para declaração de interfaces:
·    Todos os métodos são implicitamente public e abstract, ou seja, esses modificadores podem ser omitidos da declaração;

interface Automovel {

/* apesar de não ter modificadores, trata-se de
   um método public e abstract */
      void acelerar();
     
      public abstract void reduzir();
     
/* todos os métodos sempre são public */
      protected int getMarcha();
     
      /* interfaces definem apenas métodos de
   instância */
      static void setMarcha();

/* final and abstract não podem ser usados
   juntos, já que o abstract está implícito */
      final void go();
     
}

·    Todas as variáveis definidas em uma interface são necessariamente public, static e final, ou seja, interfaces não podem declarar variáveis de instância, somente constantes; esses modificadores também podem ser omitidos;

interface Pessoa {

      /* constantes devem ser inicializada */
      public static final int COD_PF = 1;
     
/* parece ser não-estática e não-pública,
   mas é */
      int COD_PJ = 2;
     
/* pode omitir os outros modificadores, já que
         estão implícitos */
      static int CONT = 0;
     
}

·    Métodos de interface não podem ser static;
·    Métodos de interface não podem ser final, strictfp ou native, pois são abstract;
·    Uma interface pode herdar de uma ou mais interfaces;
·    Uma interface só pode herdar de outras interfaces;
·    Uma interface não pode implementar outra interface ou classe;
·    Uma interface deve ser declarada com a palavra-chave interface; a palavra-chave abstract na declaração pode ser omitida, pois se torna redundante;
·    Tipos de interfaces podem ser usadas polimorficamente.