9.2 Superclases y subclases
381
ras
son del tipo
FiguraBidimensional
o
FiguraTridimensional
. El tercer nivel de esta jerarquía contiene
algunos tipos más específi cos de fi guras tipo
FiguraBidimensional
y
FiguraTridimensional
. Al igual que
en la fi gura 9.2, podemos seguir las fl echas desde la parte inferior del diagrama, hasta la superclase de más arriba en
esta jerarquía de clases, para identifi car varias relaciones
es un. Por ejemplo, un
Triangulo
es un objeto
Figu-
raBidimensional
y
es una
Figura
, mientras que una
Esfera
es una
FiguraTridimensional
y
es una
Figura
.
Observe que esta jerarquía podría contener muchas otras clases. Por ejemplo, las elipses y los trapezoides son del
tipo
FiguraBidimensional
.
No todas las relaciones de clases son una relación de herencia. En el capítulo 8 hablamos sobre la relación
tiene-un, en la que las clases tienen miembros que hacen referencia a los objetos de otras clases. Tales relaciones
crean clases mediante la composición de clases existentes. Por ejemplo, dadas las clases
Empleado
,
FechaDeNa-
cimiento
y
NumeroTelefonico
, no es apropiado decir que un
Empleado
es una
FechaDeNacimiento
o que un
Empleado
es un
NumeroTelefonico
. Sin embargo, un
Empleado
tiene una
FechaDeNacimiento
y también
tiene
un
NumeroTelefonico
.
Es posible tratar a los objetos de superclases y a los objetos de subclases de manera similar; sus similitudes
se expresan en los miembros de la superclase. Los objetos de todas las clases que extienden a una superclase
común pueden tratarse como objetos de esa superclase (es decir, dichos objetos tienen una relación
“es un” con la
superclase). Sin embargo, los objetos de una superclase no pueden tratarse como objetos de sus subclases. Por
ejemplo, todos los automóviles son vehículos pero no todos los vehículos son automóviles (los otros vehículos
podrían ser camiones, aviones o bicicletas, por ejemplo). Más adelante en este capítulo y en el 10, Programación
orientada a objetos: polimorfi smo, consideraremos muchos ejemplos que aprovechan la relación
es un.
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 una
versión personalizada del método. En dichos casos, la subclase puede
sobrescribir
(redefi nir) el método de la super-
clase con una implementación apropiada, como veremos a menudo en los ejemplos de código de este capítulo.
Figura 9.2
| Jerarquía de herencia para objetos
MiembroDeLaComunidad
universitaria.
Estudiante
MiembroDeLaComunidad
Administrador
Exalumno
Empleado
Administrativo
Docente
Maestro
Figura 9.3
| Jerarquía de herencia para
Figuras
.
FiguraTridimensional
Tetraedro
Cubo
Esfera
Cuadrado
Triangulo
Circulo
Figura
FiguraBidimensional
09_MAQ_CAP_09.indd381
4/19/081:24:28AM