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