Las interfaces en Java son una característica fundamental que le permite definir un contrato que las clases pueden implementar. Son una forma de lograr la abstracción en Java y son cruciales para el diseño de software, especialmente cuando se trata de sistemas y marcos grandes. Al aprender Java, comprender las interfaces es fundamental para avanzar a la programación de nivel intermedio y avanzado.

Concepto de interfaz

Una interfaz es una colección de métodos abstractos y constantes estáticas. Los métodos abstractos son aquellos que se declaran sin implementación. Cuando una clase implementa una interfaz, debe proporcionar implementaciones concretas para todos los métodos abstractos declarados en la interfaz. Esto asegura que la clase siga el "contrato" establecido por la interfaz.

Declaración de interfaz

Para declarar una interfaz en Java, utiliza la palabra clave interface. A continuación se muestra un ejemplo sencillo:

interfaz pública Vehículo {
    int MAX_SPEED = 120; // constante estática
    inicio vacío(); // método abstracto
    parada vacía(); // método abstracto
    aceleración nula (velocidad int); // método abstracto
}

Tenga en cuenta que los métodos dentro de una interfaz son implícitamente públicos y abstractos, por lo que no es necesario especificar estos modificadores. Las constantes son públicas, estáticas y finales por definición.

Implementación de interfaces

Cuando una clase implementa una interfaz, utiliza la palabra clave implements. A continuación se muestra un ejemplo de una clase que implementa la interfaz Vehicle:

clase pública Coche implementa Vehículo {
    inicio público vacío() {
        // implementación del método de inicio
    }
    
    parada de vacío público () {
        // implementación del método de parada
    }
    
    aceleración del vacío público (velocidad int) {
        // implementación del método de aceleración
    }
}

Si una clase no proporciona implementaciones para todos los métodos abstractos de la interfaz, debe declararse abstracta.

Interfaces y herencia

Una de las grandes ventajas de las interfaces es que pueden usarse para simular herencia múltiple, algo que no es posible con las clases en Java. Una clase puede implementar varias interfaces, separándolas con comas:

clase pública ElectricCar implementa Vehículo, EcoFriendly {
    // implementación de métodos Vehiculares y EcoFriendly
}

Esto permite que la clase ElectricCar tenga comportamientos definidos por múltiples interfaces.

Métodos predeterminados

A partir de Java 8, las interfaces pueden tener métodos default, que tienen una implementación predeterminada. Esto permite agregar nuevos métodos a las interfaces sin romper las clases que los implementan. Por ejemplo:

interfaz pública Vehículo {
    // métodos abstractos
    
    predeterminado vacío turnAlarmOn() {
        // implementación predeterminada del método turnAlarmOn
    }
    
    vacío predeterminado turnAlarmOff() {
        // implementación predeterminada del método turnAlarmOff
    }
}

Las clases que implementan la interfaz Vehicle pueden optar por utilizar estas implementaciones predeterminadas o proporcionar las suyas propias.

Métodos estáticos

Las interfaces también pueden tener métodos estáticos. Estos son métodos que se pueden llamar en el nombre de la interfaz, sin necesidad de una instancia:

interfaz pública Vehículo {
    // métodos abstractos y predeterminados
    
    cadena estática getVehicleType() {
        devolver "Tipo de vehículo desconocido";
    }
}

Este método se puede llamar así: Tipo de cadena = Vehicle.getVehicleType();

Interfaces funcionales

Una interfaz funcional es una interfaz que contiene exactamente un método abstracto. Se utilizan como base para expresiones lambda y referencias de métodos. Java 8 introdujo la anotación @FunctionalInterface para indicar que una interfaz está destinada a ser una interfaz funcional:

@FunctionalInterface
interfaz pública SimpleFunctionalInterface {
    ejecución nula();
}

Esta anotación no es obligatoria, pero ayuda a garantizar que la interfaz mantenga solo un método abstracto.

Conclusión

Las interfaces son una pieza fundamental en la programación Java, permitiendo la creación de contratos robustos, promoviendo la abstracción y facilitando el mantenimiento y expansión del código. Al implementar interfaces, las clases pueden volverse más modulares e intercambiables, lo cual es una ventaja significativa en el diseño de software. Aprender a utilizar las interfaces correctamente es un paso esencial para convertirse en un programador Java competente y está en el centro de muchos patrones de diseño avanzados en la programación orientada a objetos.

Ahora responde el ejercicio sobre el contenido:

_¿Cuál de las siguientes afirmaciones sobre interfaces en Java es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Sintaxis básica de Java: manejo de excepciones (intentar, capturar, finalmente, lanzar, lanzar)

Siguiente página del libro electrónico gratuito:

17Sintaxis básica de Java: manejo de excepciones (intentar, capturar, finalmente, lanzar, lanzar)

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.