Programación Avanzada
Tutor: Fredy Jordán C.
Interfaz en Java
Tutor: Fredy Jordán C.
¿Qué es una interfaz?
◼ Las interfaces en Java permiten definir un contrato que las
clases deben cumplir. Es como un acuerdo formal que
garantiza que una clase tendrá ciertos comportamientos.
◼ Una interfaz puede tener únicamente firmas de métodos
(public abstract) y atributos (public static final). Desde
Java 8, permite crear métodos predeterminados (default).
◼ OBLIGATORIAMENTE, todos los métodos de un interfaz
deben ser implementados por cualquier clase que
implemente esa interfaz.
◼ Es decir, no define el “cómo” de la funcionalidad, solo
especifica el “qué”.
Tutor: Fredy Jordán C.
Declaración de Interfaces en Java.
public interface <MiInterfaz>
{
// Declaración de métodos (sin implementación)
void metodo1();
int metodo2(String parametro);
Tutor: Fredy Jordán C.
Implementar una Interfaz en Clase.
public class <MiClase> implements <MiInterfaz>
{
// Implementa el método 1
@Override
void metodo1( ){
System.out.println("Implementación de método1");
}
// Implementa el método 1
@Override
int metodo2(String parametro){
return parámetro.length();
}
Tutor: Fredy Jordán C.
¿Diferencia entre clase abstracta e interfaz?
Tutor: Fredy Jordán C.
¿Diferencia entre clase abstracta e interfaz?
◼ Una clase puede implementar múltiples interfaces,
mientras que la clase puede heredar solo una clase
abstracta.
◼ En Interfaz no tiene modificadores de acceso. Se supone
que todo lo definido dentro de la Interfaz tiene un
modificador público, mientras que la Clase Abstracta puede
tener un modificador de acceso.
◼ La interfaz no puede contener campos de datos, mientras
que la clase abstracta puede tener campos de datos.
◼ Las interfaces ayudan a definir las habilidades periféricas
de una clase, mientras que una clase abstracta define la
identidad de una clase.
Tutor: Fredy Jordán C.
Laboratorio Demostrativo
Tutor: Fredy Jordán C.
Sistemas de Gestión de Empleados.
◼ Elementos de la Interfaz:
❑ Constantes.
❑ Métodos abstractos.
❑ Método default con implementación.
◼ Jerarquía de Clases:
❑ Interfaz Empleado. (Define el contrato base)
❑ Interface Bonificable. (Define funcionalidad adicional)
❑ Clase abstracta EmpleadoBase. (Implementa
funcionalidad común)
❑ Clases concretas: Desarrollador y Diseñador
Tutor: Fredy Jordán C.
Sistemas de Gestión de Empleados.
◼ Características Destacadas:
❑ Implementación múltiple de interfaces.
❑ Herencia de clase abstracta con implementación de
interfaces
❑ Sobreescritura de métodos.
❑ Uso de super para extender funcionalidad.
Tutor: Fredy Jordán C.
Tener en consideración.
Atributos en Interfaces
Tutor: Fredy Jordán C.
Tener en consideración.
Es importante entender que:
◼ Restricciones de Atributos en Interfaces:
• Todos los atributos en una interfaz son
implícitamente public static final.
• Deben ser inicializados al momento de su
declaración.
• No pueden ser modificados después de su
declaración.
• No pueden ser variables de instancia.
Tutor: Fredy Jordán C.
Tener en consideración.
◼ Forma Correcta de Manejar Atributos Variables:
• Si necesitas atributos variables, debes
declararlos en la clase implementadora
• Usa métodos en la interfaz para definir cómo
se accederá a estos atributos.
• Implementa los getters y setters en la clase
concreta.
Tutor: Fredy Jordán C.
Buenas Prácticas.
◼ Usa atributos en interfaces solo para constantes
que no cambiarán.
◼ Para datos variables, define métodos en la interfaz
y atributos en la clase implementadora.
◼ Considera usar clases abstractas si necesitas
compartir estado entre implementaciones.
La razón de estas restricciones es mantener la naturaleza
de las interfaces como contratos puramente abstractos.
Si necesitas compartir estado mutable entre
implementaciones, considera usar una clase abstracta
en su lugar.
Tutor: Fredy Jordán C.