Language Intermediário

Adicione implementações de métodos diretamente em interfaces, permitindo herança múltipla de comportamento.

✕ Java 7
// Need abstract class to share behavior
public abstract class AbstractLogger {
    public void log(String msg) {
        System.out.println(
            timestamp() + ": " + msg);
    }
    abstract String timestamp();
}

// Single inheritance only
public class FileLogger
    extends AbstractLogger { ... }
✓ Java 8+
public interface Logger {
    default void log(String msg) {
        IO.println(
            timestamp() + ": " + msg);
    }
    String timestamp();
}

// Multiple interfaces allowed
public class FileLogger
    implements Logger, Closeable { ... }
Viu um problema com este código? Nos avise.
🔀

Herança múltipla

Classes podem implementar várias interfaces com métodos default, diferente da herança simples de classes abstratas.

📦

Evolução de APIs

Adicione novos métodos a interfaces sem quebrar implementações existentes.

🧩

Comportamento combinável

Combine e misture capacidades de múltiplas interfaces livremente.

Abordagem Antiga
Classes abstratas para comportamento compartilhado
Abordagem Moderna
Métodos default em interfaces
Desde o JDK
8
Dificuldade
Intermediário
Métodos default em interfaces
Disponível

Disponível desde o JDK 8 (março de 2014).

Antes do Java 8, compartilhar comportamento entre classes não relacionadas exigia classes abstratas, o que limitava à herança simples. Métodos default permitem que interfaces forneçam implementações de métodos, para que classes herdem comportamento de múltiplas interfaces. Isso foi essencial para evoluir a API de Collections (ex. List.forEach, Map.getOrDefault) sem quebrar implementações existentes.

Compartilhar 𝕏 🦋 in