Interfaces en Java, Principios
y Aplicaciones Funcionales
[Link]. Ing. Ditmar David Castro Angulo
¿Qué es una Interfaz en Java?
● Un contrato que una clase puede implementar
● Contiene métodos abstractos (por defecto)
¿Por qué usar interfaces?
● Abstracción
● Desacoplamiento
● Polimorfismo
Sintaxis básica
Implementación de una Interfaz
Implementacion múltiple con interfaces
Herencia múltiple con interfaces 2
interface Vehiculo {
void arrancar();
}
interface Matricula {
T getMatricula();
}
intereface Coche extends Vehiculo, Matricula {
Interfaces vs Clases abstractas
Característica Interfaz Clase abstracta
Métodos Sí Sí
abstractos
Métodos Desde Java 8 Sí
concretos
Estado/atributos No (excepto Sí
constantes)
Métodos default en interfaces (Java 8+)
Métodos static en interfaces
10. Constantes en interfaces
Ejemplo
Interfaces funcionales: ¿qué son?
Una sola función abstracta (SAM)
Usadas como tipos para lambdas
12. Ejemplo de interfaz funcional
Uso con expresiones lambda
Interfaces funcionales comunes en [Link]
Predicate<T> → boolean test(T t)
Consumer<T> → void accept(T t)
Supplier<T> → T get()
Function<T,R> → R apply(T t)
Ejemplo con Predicate
Predicate<String> esLargo = s -> [Link]() > 5;
[Link]([Link]("Hola")); // false
Ejemplo con Consumer
Streams y programación funcional
19. Ventajas de interfaces funcionales
● Código más limpio
● Reutilización de comportamiento
● Facilita la programación declarativa
Ejercicio
Una empresa necesita procesar su lista de empleados para generar un informe de
aquellos que son mayores de 30 años y ganan los mejores salarios.
Tu tarea es implementar un programa que:
1. Defina una clase Empleado con los atributos:
○ nombre (String)
○ edad (int)
○ salario (double)
1. Cree una lista con al menos 5 empleados de ejemplo (puedes usar [Link](...)).
2. Utilizando Streams, realiza lo siguiente:
○ Filtra a los empleados con edad mayor a 30 años
○ Ordena a los empleados por salario en orden descendente
○ Convierte los nombres de los empleados filtrados a mayúsculas
Resumen
● Interfaces: base para abstracción y contratos
● Interfaces funcionales: clave en la programación moderna en Java
● Java 8+ permite un estilo más funcional gracias a lambdas y
[Link]