Professional Documents
Culture Documents
En el curso básico de Java de Openwebinars hemos trabajado los conceptos de
herencia y polimorfismo en Java. Hasta ahora hemos considerado escenarios en que
una clase hereda solo de otra clase. ¿Sería posible plantear un escenario donde una
clase hereda de más de una clase (herencia múltiple)?
Java no permite la herencia múltiple, pero a cambio dispone de la construcción
denominada “Interface” que permite una forma de simulación o implementación limitada
de la herencia múltiple.
Se puede decir que una interfaz es una clase completamente abstracta, es decir, no
implementa absolutamente ningún método.
Las interfaces son una analogía con el mando de TV universal, que nos permite
controlar diferentes televisores, independientemente de la marca que sea el televisor.
Cada Televisor digamos que es una Clase Java diferente que implementa dicha
interface que es el mando a distancia universal.
Todas las variables y atributos de una interfaz son implícitamente constantes
(public static final), no es necesario especificarlo en la declaración de la misma.
Los métodos de una interfaz no pueden ser: static, final, strict ni native.
Una interfaz puede heredar (extends) de una o más interfaces.
Una interfaz no puede heredar de otro elemento que no sea una interfaz.
Una interfaz no puede implementar (implements) otra interfaz.
Una interfaz debe ser declarada con la palabra clave interface.
Los tipos de las interfaces pueden ser utilizados polimórficamente.
Una interfaz puede ser public o package (valor por defecto).
Los métodos toman como ámbito el que contiene la interfaz.
Ejemplo:
interface InstrumentoDeMusica {
void tocar();
void afinar();
String tipoInstrumento();
}
Como podemos ver:
1. En Java, las interfaces de declaran con la palabra reservada interface de manera
parecidad a como se declaran las abstractas.
2. En la declaración de las interfaces sólo aparecen declaraciones de métodos (su
nombre y parámetros, sin implementación ninguna)
3. Una interfaz no encapsula datos, sólo define cuáles son los métodos que han de
implementar los objetos de aquellas clases que implementen la interfaz.
Y una clase que implementa la interface InstrumentoDeMusica podría ser:
class InstrumentoViento implements InstrumentoMusical {
void tocar() { . . . };
void afinar() { . . .};
String tipoInstrumento() {}
}