Está en la página 1de 2

Juan Manuel Muñoz Luna 12 de mayo de 2008

Programación Orientada a Objetos Maestría en Ciencias Computacionales

Herencia en Java
La Herencia, que es una forma de reutilización de software en la que las clases se crean absorbiendo los
datos (atributos) y métodos (comportamientos) de una clase existente, y se mejoran con nuevas
capacidades, o con modificaciones en las capacidades ya existentes. La reutilización de software ahorra
tiempo durante el desarrollo de programas.

Al crear una clase, en vez de declarar miembros (variables y métodos) completamente nuevos, el
programador puede designar que la nueva clase herede los miembros de una clase existente. Esta clase
existente se conoce como superclase, y la nueva clase se conoce como subclase.

Una vez creada, cada subclase puede convertirse en superclase de futuras subclases. Una subclase
generalmente agrega sus propias variables y métodos. Por lo tanto, una subclase es más específica que
su superclase y representa a un grupo más especializado de objetos. Generalmente, la subclase exhibe
los comportamientos de su superclase junto con comportamientos adicionales específicos de esta
subclase. La superclase directa es la superclase a partir de la cual la subclase hereda en forma explícita.
Una superclase indirecta se hereda de dos o más niveles arriba en la jerarquía de clases, la cual define
las relaciones de herencia entre las clases.

La experiencia en la creación de sistemas de software nos indica que algunas cantidades considerables
de código tratan con casos especiales, estrechamente relacionados. Cuando los programadores se
preocupan con casos especiales, los detalles pueden oscurecer el panorama general. Con la
programación orientada a objetos, los programadores se enfocan en los elementos comunes entre los
objetos en el sistema, en vez de enfocarse en los casos especiales. A este proceso se le conoce como
abstracción.

Es necesario hacer una diferencia entre la relación “es un” y en la relación “tiene un”. La relación “es un”
representa a la herencia; en este tipo de relación, un objeto de una subclase puede tratarse también
como un objeto de sus superclases. Por ejemplo, un auto “es un” vehículo. En contraste la relación
“tiene un” identifica a la composición, en este tipo de relación, un objeto contiene una o más
referencias a objetos como miembros. Po r ejemplo, un auto tiene un volante de dirección.

Superclases y Subclases
En Java, como en otros lenguajes de programación orientados a objetos, las clases pueden derivar desde
otras clases. La clase derivada (la clase que proviene de otra clase) se llama subclase. La clase de la que
está derivada se denomina superclase.

De hecho, en Java, todas las clases deben derivar de alguna clase. Lo que nos lleva a la cuestión ¿Dónde
empieza todo esto? La clase más alta, la clase de la que todas las demás descienden, es la clase Object,
definida en java.lang.Object es la raíz de la herencia de todas las clases.

Las subclases heredan el estado y el comportamiento en forma de las variables y los métodos de su
superclase. La subclase puede utilizar los ítems heredados de su superclase tal y como son, o puede

Universidad de Montemorelos
Juan Manuel Muñoz Luna 12 de mayo de 2008
Programación Orientada a Objetos Maestría en Ciencias Computacionales

modificarlos o sobrescribirlos. Por eso, según se va bajando por el árbol de la herencia, las clases se
convierten en más y más especializadas.

Un problema con la herencia es que una subclase puede heredar métodos que no necesita, o que no
debe tener. A pesar de que un método de superclase sea apropiado para una subclase, a menudo esa
subclase requiere que el método realice su tarea de una manera especifica para la subclase. En dichos
casos, la subclase puede sobrescribir (redefinir) el método de la superclase con una implementación
apropiada.

El modificador de acceso protected


El modificador de acceso protected es una combinación de los accesos que proporcionan los
modificadores public y private. protected proporciona acceso público para las clases derivadas y acceso
privado (prohibido) para el resto de clases.

Los miembros public de una clase son accesibles en cualquier parte en donde el programa tenga una
referencia al objeto de esa clase, o una de sus subclases. Los miembros prívate de una clase son
accesibles sólo en los métodos de la clase. Estos miembros prívate no se heredan. El uso de acceso
protected ofrece un nivel intermedio de acceso entre puclic y prívate. Cuando un método de la subclase
sobrescribe al método de la superclase, éste último puede utilizarse desde la subclase si se antepone a
su nombre la palabra clave super y un punto (.).

Constructores y finalizadores en las subclases


Al crear la instancia del objeto de una subclase se genera una cadena de llamadas a los constructores, en
donde el constructor de la subclase, antes de realizar sus propias tareas, invoca al constructor de su
superclase directa, ya sea en forma explícita (mediante la referencia super) o implícita (llamado al
constructor predeterminado de la superclase, o al constructor sin argumentos). De manera similar, si la
superclase se deriva de otra clase, el constructor de la superclase tiene que invocar al constructor de la
siguiente clase que esté un nivel arriba en la jerarquía, y así sucesivamente. El último constructor
llamado en la cadena siempre es el constructor de la clase Object. El cuerpo del constructor de la
subclase original termina de ejecutarse en último lugar. Cada uno de los constructores de la superclase
manipula a las variables de instancia de la superclase, las cuales son heredadas por el objeto de la
subclase.

Si las clases en su jerarquía de clases tienen sus propios métodos finalize, el método finalize de la
subclase debe invocar al método finalize de la superclase como su última acción, para asegurar que
todas las partes de un objeto se finalicen apropiadamente en case de que el recolector de basura
reclame la memoria de ese objeto. Cuando se llama al método finalize de un objeto de la subclase, este
método realiza su tarea y luego debe invocar al método finalize de la siguiente superclase en la
jerarquía. Este proceso debe repetirse hasta que se llame al finalizador de la superclase Object. Después
la memoria se vuelve disponible para ser utilizada por nuevos objetos.

Universidad de Montemorelos

También podría gustarte