Café y Código

11. Interfaces y Contratos de Comportamiento

1. ¿Qué es una Interfaz en Java?

Una Intefaz en Java es un contrato 100% abstracto que define qué métodos debe implementar una clase, sin especificar cómo deben realizarse. Permite lograr herencia múltiple de comportamiento.

Conducible.java (Interfaz)
JAVA
1// 1. Declaración de una Interfaz
2public interface Conducible {
3 // Atributo constante (public static final implícito)
4 int VELOCIDAD_LIMITE_URBANA = 60;
5
6 // Métodos abstractos sin cuerpo (public abstract implícito)
7 void encenderMotor();
8 void frenarDeEmergencia();
9}

2. Implementación Múltiple con implements

A diferencia de la herencia de clases (donde solo se permite extendsde un padre), en Java una clase puede implementar múltiples interfaces separadas por comas:

AutoElectrico.java (Implementación Múltiple)
JAVA
1// 2. Segunda interfaz
2public interface Mantenible {
3 double calcularCostoMantenimiento();
4 void realizarRevisionTecnica();
5}
6
7// 3. Clase que implementa múltiples interfaces
8public class AutoElectrico implements Conducible, Mantenible {
9 private String marca;
10 private int bateriaPorcentaje;
11
12 public AutoElectrico(String marca, int bateriaPorcentaje) {
13 this.marca = marca;
14 this.bateriaPorcentaje = bateriaPorcentaje;
15 }
16
17 // Implementación obligatoria de Conducible
18 @Override
19 public void encenderMotor() {
20 System.out.println("⚡ " + marca + " silencia motor eléctrico. Batería: " + bateriaPorcentaje + "%");
21 }
22
23 @Override
24 public void frenarDeEmergencia() {
25 System.out.println("🛑 " + marca + " activa frenado regenerativo por debajo del límite (" + VELOCIDAD_LIMITE_URBANA + " km/h)");
26 }
27
28 // Implementación obligatoria de Mantenible
29 @Override
30 public double calcularCostoMantenimiento() {
31 return 150.0; // Costo fijo revisión de batería
32 }
33
34 @Override
35 public void realizarRevisionTecnica() {
36 System.out.println("🔧 Revisión de celdas de batería completada para " + marca);
37 }
38}

3. Uso Práctico en el Método `main`

MainInterfaces.java
JAVA
1public class MainInterfaces {
2 public static void main(String[] args) {
3 AutoElectrico tesla = new AutoElectrico("Tesla Model 3", 95);
4
5 // Usando referencia de la interfaz Conducible
6 Conducible vehiculo1 = tesla;
7 vehiculo1.encenderMotor();
8 vehiculo1.frenarDeEmergencia();
9
10 // Usando referencia de la interfaz Mantenible
11 Mantenible servicio = tesla;
12 servicio.realizarRevisionTecnica();
13 System.out.println("Costo total servicio: $" + servicio.calcularCostoMantenimiento());
14 }
15}

Ponte a prueba

Demuestra lo que has aprendido sobre contratos, constantes y la palabra clave implements.

Dato curioso: JDK 1.0 en 1996; James Gosling y Sun Microsystems. Wikipedia

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.