Concepto de Interface
El concepto de Interface lleva un paso más adelante la idea de las clases
abstractas. En Java una interface es una clase abstracta pura, es dcir una clase
donde todos los métodos son abstractos (no se implementa ninguno). Permite al
diseñador de clases establecer la forma de una clase (nombres de métodos,
listas de argumentos y tipos de retorno, pero no bloques de código). Una
interface puede también contener datos miembro, pero estos son siempre static y
final. Una interface sirve para establecer un 'protocolo' entre clases.
Para crear una interface, se utiliza la palabra clave interface en lugar de
class. La interface puede definirse public o sin modificador de acceso, y
tiene el mismo significado que para las clases. Todos los métodos que declara
una interface son siempre public.
Para indicar que una clase implementa los métodos de una interface se
utiliza la palabra clave implements. El compilador se encargará de verificar
que la clase efectivamente declare e implemente todos los métodos de la
interface. Una clase puede implementar más de una interface.
Declaración y uso
Una interface se declara:
interface nombre_interface {
tipo_retorno nombre_metodo ( lista_argumentos ) ;
. . .
}
Por ejemplo:
interface InstrumentoMusical {
void tocar();
void afinar();
String tipoInstrumento();
}
Y una clase que implementa la interface:
class InstrumentoViento extends Object implements InstrumentoMusical {
void tocar() { . . . };
void afinar() { . . .};
String tipoInstrumento() {}
}
class Guitarra extends InstrumentoViento {
String tipoInstrumento() {
return "Guitarra";
}
}
La clase InstrumentoViento implementa la
interface, declarando los métodos y escribiendo el código correspondiente. Una
clase derivada puede también redefinir si es necesario alguno de los métodos
de la interface.
Referencias a Interfaces
Es posible crear referencias a interfaces, pero las interfaces no pueden ser
instanciadas. Una referencia a una interface puede ser asignada a cualquier
objeto que implemente la interface. Por ejemplo:
InstrumentoMusical instrumento = new Guitarra();
instrumento.play();
System.out.prinln(instrumento.tipoInstrumento());
InstrumentoMusical i2 = new InstrumentoMusical(); //error.No se puede instanciar
Extensión de interfaces
Las interfaces pueden extender otras interfaces y, a diferencia de las
clases, una interface puede extender más de una interface. La sintaxis es:
interface nombre_interface extends nombre_interface , . . . {
tipo_retorno nombre_metodo ( lista_argumentos ) ;
. . .
}
No hay comentarios:
Publicar un comentario