Академический Документы
Профессиональный Документы
Культура Документы
2 Polimorfismo
El polimorfismo ocurre cuando un programa invoca a un mtodo a travs de una variable
de la superclase; en tiempo de ejecucin, se hace una llamada a la versin correcta del
mtodo de la subclase, con base en el tipo de la referencia almacenada en la variable de la
superclase.
As, sin modificar el sistema (ms que para crear nuevas clases y modificar el cdigo que
genera nuevos objetos), los programadores pueden utilizar el polimorfismo para incluir de
manera conveniente tipos adicionales que no se hayan considerado a la hora de crear el
sistema.
Con el polimorfismo podemos usar el mismo nombre y la misma firma del mtodo para
hacer que ocurran distintas acciones, dependiendo del tipo del objeto en el que se invoca el
mtodo. Esto proporciona al programador una enorme capacidad expresiva.
El polimorfismo permite a los programadores tratar con las generalidades y dejar
que el entorno en tiempo de ejecucin se encargue de los detalles especficos. Los
programadores pueden ordenar a los objetos que se comporten en formas
apropiadas para ellos, sin necesidad de conocer los tipos de los objetos (siempre y
cuando stos pertenezcan a la misma jerarqua de herencia).
El polimorfismo promueve la extensibilidad: el software que invoca el
comportamiento polimrfico es independiente de los tipos de los objetos a los
cuales se envan los mensajes. Se pueden incorporar en un sistema nuevos tipos de
objetos que pueden responder a las llamadas de los mtodos existentes, sin
necesidad de modificar el sistema base. Slo el cdigo cliente que crea instancias
de los nuevos objetos debe modificarse para dar cabida a los nuevos tipos.
10.3 Demostracin del comportamiento polimrfico
Un objeto de una subclase puede tratarse como un objeto de su superclase. Esto permite
varias manipulaciones interesantes. Un programa puede crear un arreglo de referencias a la
superclase, que se refieran a objetos de muchos tipos de subclases. Esto se permite, ya que
cada objeto de una subclase es un objeto de su superclase.
Como veremos ms adelante en este captulo, no podemos tratar a un objeto de la
superclase como un objeto de cualquiera de sus subclases, porque un objeto superclase no
es un objeto de ninguna de sus subclases.
La relacin es un se aplica slo de una subclase a sus superclases directas (e indirectas),
pero no viceversa.
El compilador de Java permite asignar una referencia a la superclase a una variable de la
subclase, si convertimos explcitamente la referencia a la superclase al tipo de la subclase;
una tcnica que veremos con ms detalle en la seccin 10.5. Para qu nos servira, en un
momento dado, realizar una asignacin as? Una referencia a la superclase puede usarse
para invocar slo a los mtodos declarados en la superclase; si tratamos de invocar mtodos