Palavra-chave interface em Java

A palavra-chave interface em Java é usada para declarar uma interface, que define um contrato (conjunto de métodos) que uma classe deve seguir ao implementar a interface. Uma interface não pode conter implementação de métodos (a menos que seja um método default ou static), apenas suas assinaturas, e todas as variáveis declaradas em uma interface são implicitamente public, static, e final.

Características da Interface:

  • Abstração pura: Ela especifica o que uma classe deve fazer, mas não como fazê-lo.
  • Métodos abstratos: Todos os métodos de uma interface são, por padrão, public e abstract, exceto métodos default ou static.
  • Variáveis constantes: Todas as variáveis de uma interface são implicitamente public, static, e final.

Sintaxe de declaração:

interface NomeDaInterface {
// Métodos abstratos (sem corpo)
void metodo1();
void metodo2();
}

Implementação de uma Interface:

Uma classe pode implementar uma ou mais interfaces usando a palavra-chave implements. A classe que implementa a interface é obrigada a fornecer a implementação de todos os métodos abstratos da interface.

interface Animal {
void fazerSom();
}

class Cachorro implements Animal {
public void fazerSom() {
System.out.println("O cachorro late.");
}
}

public class Main {
public static void main(String[] args) {
Cachorro cachorro = new Cachorro();
cachorro.fazerSom(); // Saída: O cachorro late.
}
}

Vantagens das Interfaces:

  • Herança múltipla: Como Java não suporta herança múltipla de classes, uma classe pode implementar várias interfaces, permitindo a combinação de comportamentos de diversas interfaces.
  • Desacoplamento: Interfaces ajudam a desacoplar o código, permitindo que as classes mudem suas implementações sem afetar os usuários da interface.

Interface com métodos default e static:

Desde o Java 8, as interfaces podem conter métodos com implementação, desde que sejam declarados como default ou static.

interface Veiculo {
void acelerar();

default void buzinar() {
System.out.println("Buzinando!");
}

static void info() {
System.out.println("Interface Veiculo.");
}
}

Resumo:

  • Interface: Define métodos abstratos que devem ser implementados por classes.
  • Herança: Classes podem implementar várias interfaces, permitindo herança múltipla de comportamento.
  • Métodos: Métodos são public e abstract por padrão, mas podem ser default ou static.
  • Exemplo de implementação: class Carro implements Veiculo {}