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](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMGn68NU-WLUfixZPAKda6dUSV8DLwYJlCOhqXlyxFApeg-_L-INhFox0Ws1XBqeD2OIEmAH5Ip5XivH2-YCeoQQKGXqRPyzHIytzFYnshWaNu3Mc_zLSIaG0OHvSUOOn54kty93P-q4tY/s640/claseAbstractas1.jpg)
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.
![](https://sekthdroid.files.wordpress.com/2012/07/prtscr-capture.png)
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:
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:
![](https://jarroba.com/wp-content/uploads/2014/10/Exception_jarroba_diagramClass.png)
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](https://i.stack.imgur.com/81asr.gif)
Comentarios
Publicar un comentario