Semestre 02, 2026
Colección de métodos abstractos que las clases deben definir. Desde Java 8 también admite métodos default y static.
interface Figura {
double area();
double perimetro();
default void mostrarInfo() {
System.out.println("Soy una figura geométrica.");
}
}
class Circulo implements Figura {
private double radio;
public Circulo(double r) { this.radio = r; }
public double area() {
return Math.PI * radio * radio;
}
public double perimetro() {
return 2 * Math.PI * radio;
}
}
public static final).public y abstract.Java no permite herencia múltiple de clases, pero sí de interfaces.
interface Volador { void volar(); }
interface Nadador { void nadar(); }
class Pato implements Volador, Nadador {
public void volar() { System.out.println("El pato vuela bajo."); }
public void nadar() { System.out.println("El pato nada en Pana."); }
}
Una interfaz define un contrato; cualquier clase que la implemente se usa de forma polimórfica.
Animal a1 = new Perro();
Animal a2 = new Gato();
a1.hacerSonido(); // Guau
a2.hacerSonido(); // Miau
Permite comparar objetos del mismo tipo; clave para ordenar colecciones.
class Persona implements Comparable<Persona> {
private int edad;
@Override
public int compareTo(Persona otra) {
return Integer.compare(this.edad, otra.edad);
}
}
Collections.sort(lista); // usa compareTo
Recorre elementos de una colección sin exponer su estructura interna.
class Contador implements Iterator<Integer> {
private int actual = 0;
private final int max;
public Contador(int max) { this.max = max; }
@Override public boolean hasNext() { return actual < max; }
@Override public Integer next() { return actual++; }
}