Interfaces

En la introducción vimos lo que era la herencia

¿Os acordáis de lo que era?

Vamos a profundizar un poco más

Con un ejemplo clásico

Vampiros Vs. Hombres lobo

http://genzoman.deviantart.com/art/Vampire-VS-Werewolf-149319884

Veamos el siguiente ejemplo

Intefaces

¿Qué son?

  • Una interfaz es una plantilla que define métodos acerca de lo que puede o no puede hacer una clase.
  • Lleva un paso más adelante el concepto de clase abstracta, ya que una interfaz no es más que una clase abstracta "pura", es decir, una clase donde todos sus métodos son abstractos además de públicos, independientemente de que se hayan especificado así o no.

Intefaces

Aspectos a tener en cuenta

  • Todos los métodos de una interfaz son abstractos y deben de ser sobreescritos por la clase que implemente dicha interfaz, asimismo, todos los métodos de una interfaz son públicos, independientemente si se ha especificado manualmente o no con los modificadores public y abstract.
  • Todas las propiedades de una interfaz deben de ser públicas, estáticas y finales, ya que no existe el concepto de variable de estancia dentro de una interfaz.
  • Los métodos de una interfaz NO deben ser estáticos.

Intefaces

Aspectos a tener en cuenta

  • Debido a que los métodos de una interfaz son abstractos, NO deben ser marcados finales.
  • Una interfaz puede extender una o más interfaces.
  • Una interfaz no puede extender o heredar nada que no sea una interfaz.
  • Una interfaz no puede implementar nada.
  • Las interfaces pueden usadas polimórficamente.

Interfaces

Implementación

  • Para definir una interfaz, se utiliza la siguiente palabra reservada:
                  interface nombre_interfaz{
                  tipo_retorno nombre_metodo ( argumentos );
                  ....
                }       
              
  • Por otro lado, una clase que implementa una interfaz debe de indicarla con la palabra reservada:
                class nombre_clase implements nombre_interfaz{
                  tipo_retorno nombre_metodo ( argumentos );
                  ....
                }
              

Resumen

TipoClaseClase AbstractaInterfaz
Herenciaextends (simple)extends (simple)implements (multiple)
InstanciableSiNoNo
ImplementaMétodosAlgún métodoNada
AtributosSiSiNo

Ejercicio: Implementar una interfaz

  • Tenéis para descargaros en ALUD un interface.
  • Metedla dentro de un paquete que se llame clases
  • Desarrollad una clase que lo implemente.
  • Dentro de la carpeta bin, coged el fichero .class y mandadmelo.

Ahora ya dominamos la
HERENCIA