Entry N°4: Clases abstractas, interfaces y excepciones.

Clases y métodos abstractos:


Ya sabemos qué es una clase, gracias a entadas anteriores. Pero, ¿clase abstracta? ¿con qué se come eso? Nos referimos a una clase abstracta cuando hablamos principalmente de una clase que no tiene instancias, es decir, una clase de la cual nunca creamos un objeto. Además, las clases abstractas nunca heredan de ninguna otra clase, siempre son usadas como una superclase (o clase madre).
Para identificar una clase abstracta, se utiliza la palabra "abstract" para definirla antes de colocar "class"  y el nombre de la clase; por lo tanto una clase abstracta ejemplo quedaría definida como "public abstract class Ejemplo{}"

Resultado de imagen para clase abstracta java

En la imagen vemos la creación de la clase abstracta Figura, y vemos también que hay dos métodos peculiares con la leyenda "Métodos Abstractos", pero ¿qué son los métodos abstractos?. Similar a las clases abstractas, un método abstracto para Java es un método que nunca va a ser ejecutado porque no tiene cuerpo. Simplemente, un método abstracto referencia a otros métodos de las subclases. Podemos ver un método abstracto como una palanca que fuerza dos cosas: la primera, que no se puedan crear objetos de una clase. La segunda, que todas las subclases sobreescriban el método declarado como abstracto.

¿Es necesario que una clase que tiene uno o más métodos abstractos se defina como abstracta? Sí, si declaramos un método abstracto el compilador nos obliga a declarar la clase como abstracta porque si no lo hiciéramos así tendríamos un método de una clase concreta no ejecutable, y eso no es admitido por Java.

¿Una clase se puede declarar como abstracta y no contener métodos abstractos? Sí, una clase puede ser declarada como abstracta y no contener métodos abstractos (visto en la imagen como el método getColor()). En algunos casos la clase abstracta simplemente sirve para efectuar operaciones comunes a subclases sin necesidad de métodos abstractos. En otros casos sí se usarán los métodos abstractos para referenciar operaciones en la clase abstracta al contenido de la sobreescritura en las subclases.

Interfaces:

Una interfaz se define como el conjunto de mensajes que una clase ofrece a sus clientes (public). En Java, este concepto es ofrecido como un tipo. Por lo tanto, una interfaz Java es un conjunto de declaraciones de métodos, sin implementación; y tienen las siguientes características:
  •  Las Interfaces pueden ser declaradas como public o no (package).
  •  Todos sus métodos son abstract (no es necesario poner la palabra abstract).
  •  Todos sus métodos son public (no es necesario poner public).
  •  Las interfaces no tienen constructores.
  • Solo se permiten atributos con public static final.
  • Una interfaz puede heredar de otras interfaces.

Un uso común de las interfaces es para separar una funcionalidad de su aplicación ya que una interfaz define una funcionalidad (que debería ser único). Cada clase que implementa esta interfaz define las posibles implementaciones.



La ventaja de usar interfaces es que cualquier clase puede usar la misma interfaz y tendrán los mismos métodos públicos, como vemos en la imagen anterior. Esto significa que la clase "CellPhone" mostrada anteriormente podría ser usada en vez de la clase "LandLinePhone"; y cambiar entre estas clases no requerirían otro cambio en el código mas que el tipo declarado.


Excepciones:

 Una excepción en Java es una condición anormal que surge en una secuencia de código durante la ejecución e interrumpe el flujo normal de instrucciones, como por ejemplo cuando se hace una división entre cero,  cuando un objeto es 'null' y no puede serlo, cuando no se abre correctamente un fichero, etc. 
Cuando se produce una excepción se muestra en la pantalla un mensaje de error y finaliza la ejecución del programa. Cuando en Java se produce una excepción se crea un objeto de una determina clase (dependiendo del tipo de error que se haya producido), que mantendrá la información sobre el error producido y nos proporcionará los métodos necesarios para obtener dicha información. Estas clases tienen como clase padre la clase Throwable, por tanto se mantiene una jerarquía en las excepciones. En el siguiente diagrama mostramos algunas de las clases para que nos hagamos una idea de la jerarquía que siguen las excepciones, pero existen muchísimas más excepciones que las que mostramos:


La prncipal diferencia entre un "Error" y una "Excepcion" radica en que las excepciones son errores en el código mientras que los errores principalmente tienen que ver con la memoria y el hardware de la computadora.Por suerte Java nos permite hacer un control de las excepciones para que nuestro programa no se pare inesperadamente y aunque se produzca una excepción, nuestro programa siga su ejecución. Para ello tenemos la estructura "try – catch – finally" que la mostramos a continuación:


Respecto a la estructura "try – catch – finally", se ha de decir que primero se ejecuta el bloque "try", si se produce una excepción se ejecuta el bloque "catch" y por último el bloque "finally". En esta estructura se puede omitir el bloque "catch" o el bloque "finally", pero no ambos. Y finalmente, 
dejamos a continuación un esquema de las excepciones más comunes:

Resultado de imagen para lista de excepciones en java

Comentarios

Entradas populares