P. 1
La Herencia en java

La Herencia en java

4.0

|Views: 4.353|Likes:
Publicado porapi-3723951
Documento que da una breve descripcion de lo que significa la herencia en java
Documento que da una breve descripcion de lo que significa la herencia en java

More info:

Published by: api-3723951 on Oct 16, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/18/2014

pdf

text

original

Juan Manuel Muñoz Luna Programación Orientada a Objetos

12 de mayo de 2008 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 Programación Orientada a Objetos

12 de mayo de 2008 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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->