Herencia

Interfaces

¿Qué es una interfaz?

Una interfaz es un contrato que define un conjunto de métodos que una clase debe implementar. A diferencia de las clases abstractas, las interfaces no pueden contener implementaciones de métodos (hasta Java 8, donde se introdujeron los métodos predeterminados). Las interfaces se utilizan para definir un comportamiento común que puede ser implementado por diferentes clases, independientemente de su posición en la jerarquía de herencia.

En Java, una interfaz se declara utilizando la palabra clave interface. Por ejemplo:

public interface Animal {
    void sound(); // Método abstracto sin implementación
}

Implementación de una interfaz

Una clase puede implementar una interfaz utilizando la palabra clave implements. La clase que implementa la interfaz debe proporcionar una implementación para todos los métodos definidos en la interfaz. Por ejemplo:

public class Dog implements Animal {
    @Override
    public void sound() { // Implementación del método de la interfaz
        System.out.println("The dog barks.");
    }
}

En este ejemplo, la clase Dog implementa la interfaz Animal y proporciona una implementación para el método sound(). Esto permite que cualquier clase que implemente la interfaz Animal tenga su propia versión del método sound(), lo que es una característica clave de la programación orientada a objetos.

Ventajas de las interfaces

  1. Abstracción: Las interfaces permiten definir un contrato para un conjunto de métodos sin preocuparse por la implementación, lo que facilita la abstracción y el diseño de sistemas flexibles.
  2. Polimorfismo: Las interfaces permiten que diferentes clases implementen el mismo conjunto de métodos, lo que facilita el polimorfismo y la reutilización del código.
  3. Múltiples implementaciones: Una clase puede implementar múltiples interfaces, lo que permite que una clase tenga múltiples comportamientos sin necesidad de heredar de múltiples clases, lo que no es posible en Java debido a la falta de soporte para la herencia múltiple de clases.
  4. Separación de responsabilidades: Las interfaces permiten separar las responsabilidades de una clase, lo que facilita el mantenimiento y la evolución del código a lo largo del tiempo.

Tipos de Interfaces

  1. Interfaz funcional: Una interfaz funcional es una interfaz que tiene un solo método abstracto. Las interfaces funcionales se utilizan comúnmente en programación funcional y se pueden utilizar con expresiones lambda en Java 8 y versiones posteriores. Por ejemplo:
@FunctionalInterface
public interface Calculator {
    int calculate(int a, int b); // Método abstracto único
}
  1. Interfaz de marcador: Una interfaz de marcador es una interfaz que no tiene métodos, pero se utiliza para marcar o etiquetar una clase con un comportamiento específico. Por ejemplo, la interfaz Serializable en Java se utiliza para marcar una clase como serializable, lo que permite que sus objetos sean convertidos en un formato que pueda ser almacenado o transmitido.
public interface Serializable {
    // No tiene métodos, es una interfaz de marcador
}
  1. Interfaz de tipo: Una interfaz de tipo es una interfaz que se utiliza para definir un tipo de dato específico. Por ejemplo, la interfaz List en Java se utiliza para definir un tipo de dato que representa una lista de elementos.
public interface List<E> {
    // Métodos para manipular la lista
    void add(E element);
    E get(int index);
    // Otros métodos de la interfaz List
}

Conclusión

Las interfaces son una herramienta fundamental en la programación orientada a objetos que permiten definir un contrato para un conjunto de métodos que una clase debe implementar. Las interfaces facilitan la abstracción, el polimorfismo y la reutilización del código, lo que las convierte en una parte esencial del diseño de sistemas flexibles y mantenibles en Java. Comprender cómo utilizar las interfaces es crucial para cualquier desarrollador de Java que busque crear aplicaciones robustas y escalables.

Copyright Jesús Aurelio Castro Magaña © 2026