Cargando



Interfaces y clases abstractas en Java

En este tutorial veremos cómo podemos diferenciar las interfaces de las clases abstractas y algunas cosas que se relacionan con este tema.


sep 26 2014 03:32
Intermedio
sep 28 2014 18:11
A pesar que ambas estructuras pueden parecer similares ya que obligan a las clases que las utilizan a crear los métodos que estas poseen y utilizarlos para que puedan ser válidas, entre sí tienen diferencias clave, que pueden darnos una mayor luz de cómo podemos utilizarlas.

Las diferencias aunque son sutiles, nos permiten utilizar ambas estructuras inclusive combinadas, de esta forma podemos lograr darle un mayor orden a nuestro proyecto y crear aplicaciones que nos permitan reproducir de mejor manera los objetos del mundo real en un formato digital.

Restricciones
La principal diferencia que vemos entre clases abstractas e interfaces es que la primera es una clase y la segunda no, a pesar que la interface tiene una estructura similar enfrenta unas restricciones que no se dan en una clase abstracta.

Variables
La clase abstracta no tiene restricción en cuanto al uso de variables, sin embargo la interface si tiene, de hecho todas las variables que vayamos a utilizar deben ser public, static o final.


Constructores


En este caso el constructor de la clase abstracta debe invocarse a través de subclases, lo que deja fuera la posibilidad de instanciar a la misma a través del operador new.

En el caso de la interface, esta no puede tener constructores ya que no es una clase, lo que hace que también descartemos la creación de instancias con el operador new.

Métodos
En una interface los métodos deben ser public abstract de forma obligatoria, en cambio en la clase abstracta podemos colocar cualquier tipo de método sin problemas, lo que nos marca una diferencia más.


Herencia e implementación


Otro punto que debemos tener en cuenta es la forma de hacer herencia y de implementación que podemos lograr con estas dos estructuras en Java, sabemos que cuando hacemos herencia en una clase, solo podemos heredar directamente de una clase superior, es decir, que si queremos heredar de dos clases diferentes, debemos crear como un efecto cascada, donde una primera clase hereda de la clase superior y luego otra clase hereda de esta para obtener su funcionalidad y la de su clase padre.

En las interfaces no ocurre este problema, de hecho podemos heredar directamente de varias interfaces, por lo que si queremos obtener sus métodos podemos hacerlo sin problema.

java_interfaces_clases_abstractas.jpg


En el caso de la implementación de una interface en una clase abstracta si tenemos más libertad, en este caso podemos implementar múltiples Interfaces sin ningún tipo de restricción en este caso, lo que nos da la posibilidad de hacer una interface padre más compleja por decirlo de algún modo. Lo importante acá es saber y tener en cuenta que una interface no es una clase y por lo tanto no puede heredar de una, solo puede hacer herencia de otras interfaces.

java_interfaces_clases_abstractas2.jpg


Con esto finalizamos este tutorial, hemos visto las diferencias en restricciones e implementación en nuestros programas de estas dos estructuras en Java, a pesar que ambas sirven para modelar y definir comportamientos cada una tiene su espacio, por lo que al conocerlas mejor ya podremos decidir cuál usar en nuestros programas hechos con este lenguaje.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X