DEV Community

Cover image for Entendendo Interfaces em Java: O Modelo Que Garante Ordem no Seu Código
Audrey-Albuquerque
Audrey-Albuquerque

Posted on

Entendendo Interfaces em Java: O Modelo Que Garante Ordem no Seu Código

Olá, dev! 👋

Se você está mergulhando no mundo do Java e já se perguntou o que exatamente é uma interface, este post é pra você.

Vamos quebrar tudo em partes simples — sem enrolação — e entender por que as interfaces são tão poderosas e essenciais pra quem quer escrever código limpo, escalável e bem estruturado.


🎯 O Papel Fundamental de uma Interface em Java

Em poucas palavras, uma interface é um modelo (ou contrato) que uma classe se compromete a seguir.

Pense assim: ela define o que uma classe deve fazer, mas não como isso deve ser feito.

Quando uma classe “assina esse contrato”, ou seja, implementa uma interface, ela precisa cumprir todas as promessas definidas ali — implementando cada método que a interface declara.

👉 Em resumo:

  • A interface especifica obrigações — o que uma classe deve ter.
  • A classe garante a implementação — como ela vai fazer isso.

Um ótimo exemplo é o de uma classe Peixe que implementa as interfaces Presa e Predador .

Isso significa que um peixe pode tanto fugir de predadores quanto caçar peixes menores. 🐟⚔️


💡 Características-Chave das Interfaces

1. ✅ Suporte a Múltiplas Implementações

Essa é uma das maiores vantagens das interfaces: uma classe pode implementar várias interfaces ao mesmo tempo.

Diferente da herança tradicional, onde uma classe só pode ter uma superclasse, aqui você pode “misturar comportamentos” livremente.

📘 Exemplo:

public class Peixe implements Presa, Predador {
    ...
}
Enter fullscreen mode Exit fullscreen mode

Nesse caso, o Peixe herda os métodos tanto de Presa quanto de Predador.
Resultado? O peixe pode caçar e também fugir.

2. 🧱 Métodos Abstratos por Padrão

Dentro de uma interface, os métodos são abstratos por padrão — ou seja, não têm corpo.
Você só declara o método, e quem for implementar é que define o comportamento.

📘 Exemplo:

public interface Presa {
    void fugir();
}
Enter fullscreen mode Exit fullscreen mode

A classe que implementar essa interface precisa obrigatoriamente dizer o que o método fugir() vai fazer:

public class Coelho implements Presa {
    @Override
    public void fugir() {
        System.out.println("O coelho está fugindo!");
    }
}
Enter fullscreen mode Exit fullscreen mode

Simples assim. 🐇💨

3. Implementação Obrigatória

Toda classe que usa (implements) uma interface precisa implementar todos os métodos declarados nessa interface.
Se não fizer isso, o compilador já reclama — sem dó nem piedade.

📘 Exemplo:

public class Hawk implements Predador {
    @Override
    public void ataca() {
        System.out.println("O falcão está atacando!");
    }
}
Enter fullscreen mode Exit fullscreen mode

Se você tentar chamar falcao.fugir(), o método nem vai existir — afinal, Falcão só implementa Predador, não Presa.

4. Declaração de Variáveis

Assim como nas classes, é possível declarar variáveis dentro de uma interface.
Mas atenção: elas são automaticamente públicas, estáticas e finais (public static final).
Ou seja, funcionam como constantes que podem ser usadas por quem implementar a interface.

Exemplo Completo

Aqui está um exemplo completo com todas as classes mencionadas no vídeo:

// Interface Presa
public interface Presa {
    void flee();
}

// Interface Predador
public interface Predador {
    void hunt();
}

// Classe Coelho (implementa Presa)
public class Coelho implements Presa {
    @Override
    public void flee() {
        System.out.println("O coelho está fugindo saltitando!");
    }
}

// Classe Hawk (implementa Predador)
public class Hawk implements Predador {
    @Override
    public void hunt() {
        System.out.println("O falcão está atacando!");
    }
}

// Classe Peixe (implementa Presa e Predador)
public class Peixe implements Presa, Predador {
    @Override
    public void flee() {
        System.out.println("O peixe está fugindo de um peixe maior!");
    }

    @Override
    public void hunt() {
        System.out.println("O peixe está atacando um peixe menor");
    }
}

// Classe Principal
public class Main {
    public static void main(String[] args) {
        Coelho coelho = new Coelho();
        coelho.fugir();

        Falcao falcao = new Falcao();
        falcao.atacar();

        Peixe peixe = new Peixe();
        peixe.hunt();
        peixe.flee();
    }
}
Enter fullscreen mode Exit fullscreen mode

Saída esperada:

O coelho está fugindo saltitando!
O falcão está atacando!
O peixe está fugindo de um peixe maior!
O peixe está atacando um peixe menor!
Enter fullscreen mode Exit fullscreen mode

Conclusão

Pense nas interfaces como contratos ou modelos de comportamento.
Elas não dizem “como” algo deve ser feito, mas garantem que seja feito.

Elas são o coração da programação orientada a interfaces, que é uma das boas práticas mais poderosas no Java moderno.

Conceito Explicação
O que é Um contrato que define métodos que uma classe deve implementar
Palavra-chave implements
Métodos Abstratos por padrão (sem corpo)
Herança múltipla Sim, pode implementar várias interfaces
Uso típico Garantir comportamentos padronizados entre classes diferentes

Em resumo:

Interfaces trazem clareza, organização e flexibilidade. Elas são o jeitinho Java de dizer:

“Ei, se você quiser fazer parte desse grupo, siga essas regras!” 😄
E aí, já usou interfaces em algum projeto?

Top comments (0)