Interfaces en Java explicadas: Cómo definirlas e implementarlas con ejemplos prácticos
¿Qué es una interfaz en Java?
Una interfaz en Java es un tipo abstracto que define un contrato para las clases. Puede declarar constantes y métodos abstractos pero no puede mantener estado. Todos los métodos son implícitamente public y abstract, y una clase puede implementar múltiples interfaces, proporcionando el comportamiento requerido.
Declaración de una interfaz
interface MiInterfaz {
// métodos abstractos
}
Implementación de una interfaz
class Perro implements Mascota {
// implementar métodos de Mascota
}
Extensión de interfaces
interface AnimalMontable extends Animal, Vehiculo {
// métodos abstractos adicionales
}
¿Por qué se necesitan las interfaces?
Las interfaces permiten separar el qué del cómo. Habilitan el polimorfismo, promueven el acoplamiento débil y resuelven el problema de la "herencia múltiple" que Java no soporta para clases.
Por ejemplo, un ReproductorMultimedia puede tener subclases separadas ReproductorCD y ReproductorDVD, cada una con su propia implementación de reproducir(). Si una clase necesitara ambas capacidades, Java prohibiría la herencia múltiple de clases, pero una interfaz permite combinar los comportamientos limpiamente.


De forma similar, una clase Perro puede extender Animal e implementar una interfaz Mascota para satisfacer tanto obligaciones de herencia como contractuales.

Ejemplo de interfaz en Java
Paso 1: Escribe el siguiente código:
interface Mascota {
void test();
}
class Perro implements Mascota {
@Override
public void test() {
System.out.println("Método de interfaz implementado");
}
public static void main(String[] args) {
Mascota p = new Perro();
p.test();
}
}
Paso 2: Compila y ejecuta el programa para ver la salida.
Clase vs. Interfaz
| Clase | Interfaz |
|---|---|
| Una clase puede instanciarse y puede contener estado. | Una interfaz no puede instanciarse y contiene solo constantes y firmas de métodos. |
| Puede tener métodos concretos (implementados). | Antes de Java 8, no podía tener métodos concretos; desde Java 8 en adelante, puede contener métodos default y static. |
Los modificadores de acceso pueden ser private, protected o public. | Todos los miembros son implícitamente public (y static final para campos). |
Cuándo usar una interfaz vs. una clase abstracta
- Clase abstracta: Úsala cuando necesites una implementación base común o estado compartido para clases relacionadas.
- Interfaz: Úsala cuando necesites definir un rol o capacidad que puedan adoptar clases no relacionadas.
Datos clave sobre interfaces
- Una clase puede implementar múltiples interfaces, pero debe proporcionar implementación para cada método declarado.
- Las interfaces no pueden instanciarse directamente; sirven como contratos.
- Las referencias de interfaz pueden apuntar a cualquier clase implementadora.
- Una interfaz puede extender una o más otras interfaces.
- Se permiten interfaces anidadas dentro de otras interfaces o clases.
- Dos interfaces no pueden declarar métodos con el mismo nombre pero diferentes tipos de retorno si una clase implementa ambas.
- Desde Java 8, las interfaces pueden contener métodos
defaultystatic.
Resumen
- Las interfaces definen un contrato; las clases proporcionan la implementación.
- Todos los métodos de interfaz son implícitamente
publicyabstract(a menos que seandefaultostatic). - Las interfaces no pueden instanciarse pero pueden ser referenciadas por variables.
- Usa interfaces para lograr polimorfismo y sortear la limitación de herencia simple de Java.
Java
- Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código
- Entendiendo Interfaces en C#: Definición, Ejemplo y Uso Práctico
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Java Hola Mundo: Guía paso a paso para escribir tu primer programa Java
- Método Java String length(): Cómo obtener el tamaño de un String (Ejemplo)
- Entendiendo Java String.charAt(): Sintaxis, tipo de retorno, excepciones y ejemplo práctico
- Dominando Java String.endsWith(): Cómo comprobar sufijos de cadena con ejemplos
- Interfaz vs Clase Abstracta en Java: Cómo elegir la abstracción correcta
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos
- Algoritmo Insertion Sort en Java: Ejemplo Claro y Guía Paso a Paso
- Entendiendo las Interfaces en Java: Definiciones, Usos y Buenas Prácticas