Interfaces en java

Solo disponible en BuenasTareas
  • Páginas : 5 (1221 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de septiembre de 2010
Leer documento completo
Vista previa del texto
I N T E R F A C E S
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 decir 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 interfaceson 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.
DECLARACION Y USO
Una interface se declara:
interface nombre_interface {
    tipo_retornonombre_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 extendsInstrumentoViento {
    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. 
Diferencias entre un interface y una clase abstracta
Un interface es simplemente una listade métodos no implementados, además puede incluir la declaración de constantes. Una clase abstracta puede incluir métodos implementados y no implementados o abstractos, miembros dato constantes y otros no constantes.
Ahora bien, la diferencia es mucho más profunda. Imaginemos que Runnable fuese una clase abstracta. Un applet descrito por la clase MiApplet que moviese una figura por su área detrabajo, derivaría a la vez de la clase base Applet (que describe la funcionalidad mínima de un applet que se ejecuta en un navegador) y de la clase Runnable. Pero el lenguaje Java no tiene herencia múltiple.
En el lenguaje Java la clase MiApplet deriva de la clase base Applet e implementa el interface Runnable
class MiApplet extends Applet implements Runnable{
//...
//define la función run delinterface
public void run(){
//...
}
//redefine paint de la clase base Applet
public void paint(Graphics g){
//...
}
//define otras funciones miembro
}
Una clase solamente puede derivar extends de una clase base, pero puede implementar varios interfaces. Los nombres de los interfaces se colocan separados por una coma después de la palabra reservada implements.
El lenguaje Java nofuerza por tanto, una relación jerárquica, simplemente permite que clases no relacionadas puedan tener algunas características de su comportamiento similares.
 Interfaces y Polimorfismo
En el lenguaje C++, es posible la herencia múltiple, pero este tipo de herencia presenta dificultades. Por ejemplo, cuando dos clases B y C derivan de una clase base A, y a su vez una clase D deriva de B y C.Este problema es conocido con el nombre de diamante.
[pic]
En el lenguaje Java solamente existe la herencia simple, pero las clases pueden implementar interfaces. Vamos a ver en este apartado que la importancia de los interfaces no estriba en resolver los problemas inherentes a la herencia múltiple sin forzar relaciones jerárquicas, sino es el de incrementar el polimorfismo del lenguaje más allá...
tracking img