¿A qué te refieres con tipo estático?
A al implementar L1 es de
tipo L1. Por lo que al seguir la programación orientada a interfaces puedes hacer polimorfismo (como si se tratara de herencia).
L1 -> Interface
A implements L1
B implements L1
C implements L1
Puedes hacer:
L1 obj = new A();
obj = new B();
obj = new C();
Una interface es un
contrato. Ésta especifica
qué es lo que debe hacer pero no cómo la clase que lo implemente. Por ejemplo:
public interface Construccion {
void hacerBases();
void hacerColumnas();
void hacerTechos();
}
Nos dice que toda construcción debe tener esas 3 tareas pero que cada construcción las puede hacer a su manera.
Por ésto, podemos hacer:
public class Casa implements Construccion {
// sobre-escribe métodos
}
public class Edificio implements Construccion {
// sobre-escribe métodos
}
Con la ayuda de las interfaces generas independencia y ganas mucha flexibilidad además de simular multiherencia.
Como dato adicional, a partie de Java 8 puedes especificar la implementación de un método en la misma interface:
public interface Construccion {
default void hacerBases() {
System.
out.
println("Haciendo bases..."); }
}
Recuerda que los métodos en una interface son public y abstract por defecto, por lo que no es necesario especificar public.
Salu2.