[OCPJP6] 004 – Declarações e controle de acesso

De classes abstratas a interfaces

No último post escrevi um pouco sobre classes abstratas, hoje irei passar alguns conceitos de interface, e também alguns exemplos.

  1. Uma interface pode ser public ou default.
  2. Todos os métodos são implicitamente public e abstract. Em outras palavras, você não precisa declarar os modificadores public e/ou abstract no método, mesmo assim ele sempre será public e abstract.
  3. Todas os atributos definidos em uma interface devem ser public, static e final. Em outras palavras, as interfaces só podem declarar constantes (variáveis de não instância).
  4. Uma interface não pode implementar uma interface ou uma classe.
  5. Uma interface pode estender uma ou mais interfaces.
  6. Uma classe que implementa uma interface deve implementar todos os métodos.

Exemplos de métodos e atributos implícitos e explícitos:

Fruta.java

package certificacao;

public interface Fruta {
    public abastract String cor(); // metodo – explicito
}

FrutaCitrica.java

package certificacao;

public interface FrutaCitrica extends Fruta {
    String vitamina = "C"; // constante – public static final
    boolean isAcida(); // metodo – public abstract implicito
}

Um adicional: Interface + Classe Abstrata

Dado uma classe que implementa uma interface e não implementa os métodos, irá ocorrer erro de compilação. Veja abaixo:

Suco.java

package certificacao;

public interface Suco {
    public abstract boolean comAcucar(); // metodo – explicito
}

SucoNatural.java

package certificacao;

public class SucoNatural implements Suco {
    // ERRO
}

Mas, e se for uma classe abstrata?

package certificacao;

public abstract class SucoNatural implements Suco {
    // OK
}

Haaaaaaa… agora compila =) Por quê? 

– O método comAcucar() só precisa ser implementado em uma subclasse de instância, por exemplo public class SucoNaturalSimplesMas, também pode ser implementado na classe SucoNatural.

Comentem, estendam o assunto… Compartilhem =)

Anúncios