414

Capítulo 9 Programación orientada a objetos: herencia

En el capítulo 10, Programación orientada a objetos: polimorfi smo, continuaremos con nuestra discusión 

sobre la herencia al introducir el polimorfi smo: un concepto orientado a objetos que nos permite escribir progra-
mas que puedan manipular convenientemente, de una forma más general, objetos de una amplia variedad de clases 
relacionadas por la herencia. Después de estudiar el capítulo 10, estará familiarizado con las clases, los objetos, el 
encapsulamiento, la herencia y el polimorfi smo: las tecnologías clave de la programación orientada a objetos.

Resumen

Sección 9.1 Introducción

• La reutilización de software reduce el tiempo de desarrollo de los programas.
• La superclase directa de una subclase (que se especifi ca mediante la palabra 

extends

 en la primera línea de una 

declaración de clase) es la superclase a partir de la cual hereda la subclase. Una superclase indirecta de una subclase 
se encuentra dos o más niveles arriba de esa subclase en la jerarquía de clases.

• En la herencia simple, una clase se deriva de una superclase directa. En la herencia múltiple, una clase se deriva de 

más de una superclase directa. Java no soporta la herencia múltiple.

• Una subclase es más específi ca que su superclase, y representa un grupo más pequeño de objetos.
• Cada objeto de una subclase es también un objeto de la superclase de esa clase. Sin embargo, el objeto de una super-

clase no es un objeto de las subclases de su clase.

• Una 

relación 

“es un” representa a la herencia. En una relación “es un”, un objeto de una subclase también puede 

tratarse como un objeto de su superclase.

• Una 

relación 

“tiene un” representa a la composición. En una relación “tiene un”, el objeto de una clase contiene refe-

rencias a objetos de otras clases.

Sección 9.2 Superclases y subclases

Las relaciones de herencia simple forman estructuras jerárquicas tipo árbol; una superclase existe en una

  relación jerárquica con sus subclases.

Sección 9.3 Miembros 

protected

• Los 

miembros 

public

 de una superclase son accesibles en cualquier parte en donde el programa tenga una referencia 

a un objeto de esa superclase, o de una de sus subclases.

• Los 

miembros 

private

 de una superclase son accesibles sólo dentro de la declaración de esa superclase.

• Los 

miembros 

protected

 de una superclase tienen un nivel intermedio de protección entre acceso 

public

y

priva-

te

. Pueden ser utilizados por los miembros de la superclase, los miembros de sus subclases y los miembros de otras 

clases en el mismo paquete.

• Cuando un método de una subclase sobrescribe a un método de una superclase, se puede acceder al método de la 

superclase desde la subclase, si se antepone al nombre del método de la subclase la palabra clave 

super

 y un separa-

dor punto (

.

).

Sección 9.4 Relación entre las superclases y las subclases

• Una subclase no puede acceder o heredar los miembros 

private

 de su superclase; al permitir esto se violaría el 

encapsulamiento de la superclase. Sin embargo, una subclase puede heredar los miembros no 

private

 de su super-

clase.

• El método de una superclase puede sobrescribirse en una clase para declarar una implementación apropiada para la 

subclase.

• El 

método 

toString

 no recibe argumentos y devuelve un objeto 

String

. Por lo general, una subclase sobrescribe el 

método

toString

 de la clase 

Object

.

• Cuando se imprime un objeto usando el especifi cador de formato 

%s

, se hace una llamada implícita al método 

toString

 del objeto para obtener su representación de cadena.

Sección 9.5 Los constructores en las subclases

• La primera tarea de cualquier constructor de subclase es llamar al constructor de su superclase directa, ya sea en 

forma explícita o implícita, para asegurar que las variables de instancia heredadas de la superclase se inicialicen 
en forma apropiada.

09_MAQ_CAP_09.indd414

4/19/081:24:43AM