Language Intermedio

Añade implementaciones de métodos directamente en interfaces, habilitando herencia múltiple de comportamiento.

✕ 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 { ... }
¿Ves un problema con este código? Cuéntanos.
🔀

Herencia múltiple

Las clases pueden implementar varias interfaces con métodos default, a diferencia de la herencia simple con clases abstractas.

📦

Evolución de APIs

Añade nuevos métodos a interfaces sin romper las implementaciones existentes.

🧩

Comportamiento composable

Combina capacidades de múltiples interfaces libremente.

Enfoque Antiguo
Clases abstractas para comportamiento compartido
Enfoque Moderno
Métodos default en interfaces
Desde JDK
8
Dificultad
Intermedio
Métodos default en interfaces
Disponible

Disponible desde JDK 8 (marzo 2014).

Antes de Java 8, compartir comportamiento entre clases no relacionadas requería clases abstractas, lo que limitaba a herencia simple. Los métodos default permiten que las interfaces proporcionen implementaciones, de modo que las clases pueden heredar comportamiento de múltiples interfaces. Esto fue esencial para evolucionar la API de Collections (p.ej., List.forEach, Map.getOrDefault) sin romper las implementaciones existentes.

Compartir 𝕏 🦋 in