Después de unos días donde hemos realizado
un paréntesis en el curso ofreciendo ejercicios y el índice oficial, volvemos
al curso. En éste cuarto capítulo trataremos uno de los aspectos de la
Programación Orientada a Objetos que es posiblemente la más importante, la
Herencia.
Foto tomada de freedigitalphotos.net |
¿Qué es la herencia?
Bueno, realmente llevamos usando herencia
desde el principio del curso y en los ejercicios propuestos, ahora sólo falta
definirla formalmente.
La herencia es la cualidad de la
Programación Orientada a Objetos por la cual una clase recibe todos los métodos
de sus clases padre y además define los suyos propios.
Cuando hablamos de herencia no podríamos
definirlo mejor que como una herencia en el sentido estricto de la palabra. Una
clase que viene de una o más clases en su correspondiente jerarquía recibe
todos los métodos de sus clases predecesoras.
Ejemplo.
Imaginemos de nuevo nuestra clase Animal, la
cual tendrá una subclase llamada Carnívoro y ésta a su vez dos subclases
llamadas Felino y Cánido, de la cual instanciaremos los objetos León y Lobo.
Pues bien, imaginemos que la clase Animal
tiene un método llamado Caminar, la subclase Carnívoro tiene un método llamado
Comer, la clase Felino tiene el método Correr y la clase Cánido tiene el método
Aullar.
En éste caso planteado si instanciamos un
objeto León de la clase Felino, éste objeto tendrá los métodos Caminar, Comer y
Correr. Mientras que si instanciamos un objeto Lobo de la clase Cánido tendrá
los métodos Caminar, Comer y Aullar.
Si instanciamos un objeto de la clase
Carnívoro, dicho objeto tendrá los métodos Caminar y Comer.
De ésta forma actúa la herencia, y aquí
reside una gran parte de la potencia de la Programación Orientada a Objetos.
Podemos definir una clase y métodos generales, luego varias clases hijas bien
diferenciadas, y a su vez nuevas clases hijas por cada una de las anteriores.
De ésta forma tendremos una jerarquía de clases perfectamente definida, bien
implementada y con un potencial enorme para poder desarrollar comodamente.
Superclase y subclase.
Esto serían dos definiciones más formales de
los elementos que hemos visto hasta ahora.
Superclase – Es la clase que aporta sus
métodos a las clases que la hereden, también se llama Clase Padre.
Subclase – Son las clases que heredan de una
Superclase, también se las conoce como Clase Hija.
En nuestro ejemplo Animal sería una
superclase y Carnívoro una subclase de Animal, pero a la vez la clase Carnívoro
es una superclase de Felino y Cánido y éstas serían sus subclases.
this y super.
Una subclase hereda todos los métodos de su
superclase, no obstante es posible redefinir éstos de nuevo o bien ampliarlos.
Tanto si escogemos una opción como otra se
puede utilizar perfectamente dos palabras reservadas para tal fin, aunque
normalmente serán las siguientes:
this – Con esto accedemos a los atributos de
la propia clase, gracias a esto podemos trabajar con los atributos propios. Es
un método bastante potente y a la vez aclaratorio acerca de a qué elemento
queremos hacer referencia.
super – Con super podemos acceder a todos
los atributos de la superclase de la que estamos heredando (o de los ancestros)
Conclusión.
Gracias a la herencia podemos establecer una
jerarquía de clases en las que los métodos se van heredando para así poder
usarlos, ampliarlos o redefinirlos. Es un concepto muy importante de la
Programación Orientada a Objetos así como una herramienta muy potente para
desarrollar con claridad, rapidez y reutilización de código.
Con esto terminamos el cuarto capítulo del
curso de Programación Orienta a Objetos, en el próximo capítulo veremos otro
concepto bastante importante y que nos ayudará bastante a la hora de
desarrollar: La encapsulación.