Ejercicio Interfaces

En este pequeño ejercicio vamos a trabajar con el concepto de Interface. Una interfaz es una Clase Java que define qué tenemos que implementar pero no cómo implementarlo. Una interfaz siempre debe ser pública y detalla una lista de métodos públicos que las clases que la implementen deben desarrollar sí o sí. Además una interfaz puede definir atributos pero estos serán estáticos.

Diferencias entre clase e interfaz:

ClaseAbstractInterfaz
En clase, puede crear instancias de variable y crear un objeto.No puedo crear instancias de variables ni objetos.En una interfaz, no puede crear instancias de variables y crear un objeto.
La clase puede contener métodos concretos (con implementación)Puede contener métodos concretos y métodos abstractos.La interfaz no puede contener métodos concretos (con implementación)
Los especificadores de acceso utilizados con las clases son privados, protegidos y públicos.Atributos y métodos concretos pueden tener cualquier visibilidad aunque no se suele usar private.
Los métodos abstractos no pueden ser privados.
En la interfaz solo se utiliza un especificador: público.

¿Cuándo usar Interface en vez de Clase abstracta?

  • Si queremos simular herencia múltiple. Java sólo permite herencia simple pero permite implementar múltiples interfaces.
  • Usamos abstract cuando hay una jerarquía de clases definida.
  • Usamos Interface cuando queremos definir una serie de roles a cumplir por las clases que la implemente independientemente del árbol de herencia de las clases.

Un ejemplo de uso de interfaz

Un caso típico sería crear una interfaz para permitir que los objetos de una clase guarden y recuperen su estado de un fichero XML. La Interfaz propuesta podría ser ésta (Descargar):

Si estuviésemos creando una aplicación, por ejemplo de compra/venta de coches en la que guardemos los Coches, las Ventas y los Clientes. Las clases Venta, Coche y Cliente no estarían relacionadas por herencia ya que cada una trabaja con realidades que no tienen nada que ver una con otra. Sin embargo podemos hacer que implementen la interfaz IObjetoXML y todas las clases permitirán guardar y cargar los datos los objetos desde un fichero XML. Es decir, no hay relación jerárquica entre clases pero sin embargo todas pueden guardar y cargar sus datos en un XML y podemos utilizar dichas funciones sin preocuparnos de cómo se han implementado.

Anotación: A partir de Java 8 se permite la definición de métodos por defecto (default) en las interfaces. No trataremos esta aproximación ya que por norma general, lo recomendable es que una interface no implemente ningún método.

Ejercicio propuesto: Descargar

Solución en Netbeans: Descargar

Enlaces recomendados: https://guru99.es/java-interface/ En especial a partir del ejemplo.

Diseña un sitio como este con WordPress.com
Comenzar