Todo este tema hace que podamos obtener métodos y funcionalidades ya desarrolladas y probadas, con esto simplemente podemos saltarnos esos pasos para desarrollar solo lo que necesitamos, con ello los tiempos de desarrollo pueden bajar notablemente, así como también la cantidad de código que necesitamos escribir.
Superclases y Subclases
Al momento de modelar una clase sabemos que sus objetos tendrán algunos atributos propios, sin embargo habrán clases totalmente diferentes que pueden compartir dichos atributos con otra clase, por lo que en vez de copiar los atributos una y otra vez, podemos hacer una clase con todo lo que tienen en común y heredar de ella agregando las cosas particulares de cada una.
A esto es lo que llamamos herencia, pero más allá de eso la superclase sería la clase que tiene todos los atributos y métodos en común, y las subclases van a ser las que heredan de la primera, con ello establecemos un sistema de jerarquía de clases, donde a mayor especificación se van bajando los niveles y no hay límite, podemos tener un clase que herede de otra clase que a su vez ha heredado de otra más, con ello podemos ir traspasando atributos comunes a una clase inferior que será muy específica pero que puede compartir con otros objetos una serie de funcionalidades.
Ejemplo Clásico
El ejemplo clásico que se utiliza para describir este comportamiento son las clases de figuras geométricas, este caso sirve de estudio debido a que todas las figuras comparte algunos atributos, por ejemplo, pueden tener un color, pueden estar llenas con este color y después al detalle cada una tiene sus características propias, como por ejemplo la forma en que se calcula el área, si tiene lados iguales o lados diferentes o radio en el caso de las circunferencias.
Veamos a continuación un pequeño diagrama que ilustra cómo se comporta el tema de las herencias de una superclase:
Como podemos ver de la clase padre o superclase bajan los atributos comunes y luego cada hija o subclase define los suyos propios e individuales, con ello podemos recrear todo lo que hemos venido hablando.
Con esto finalizamos este tutorial, hemos alcanzado una nueva área conceptual de la orientación a objetos, si al diseñar nuestra aplicación o programa pensamos en esto y desarrollamos en función a herencias y re-utilización de código, lograremos tener mayor velocidad de desarrollo y estaremos utilizando de mejor forma las herramientas que Java pone a nuestra disposición.