ligadura dinamica y polimorfismo

jony81
23 de Diciembre del 2004
Hola. Tengo un problema. Tengo una clase padre (Cliente), que tiene unas clases hijos heredadas que representan tipos de clientes (Turista, Buisness, …). Los objetos creados del tipo de las subclases (turista, …), los introduzco en una Colección.
Cuando recorro la colección, como no se que tipo son, los voy sacando del tipo de la clase padre (los saco todos como cliente), pero cuando quiero utilizar los metodos de los hijos con este objeto sacado, no puedo. Sólo accedo a los metodos de Cliente, la clase padre.
Se que tengo que utilizar la ligadura dinámica, de tal manera que al invocar un método de la subclase (de la clase Turista) desde un objeto de la clase padre (cliente), la ligadura dinámica tiene que reconocer el tipo de datos del objeto cliente i poder asi utilizar sus metodos.
Espero haberme explicado bien, si no es así procurare volver a redactarlo. Saludos y gracias.

Jes?eyes
23 de Diciembre del 2004
El problema que tienes, así como su solución, es descrito en gran detalle en el libro "Thinking in Patterns" de Bruce Eckel, solo que el usa un ejemplo de recolección de basura. Por fortuna, puedes bajar el libro gratuitamente de sus página web en:

http://www.mindview.net/Books/TIPatterns/

Espero que esta información te sea util.

Jesús

carlos
23 de Diciembre del 2004
Mira...como es el tema?....tenes restricciones sobre la clase base? sino.... lo que podés hacer es colocar una clase con métodos abstractos, es decir,,, si Turista tiene sacarBoleto() que es distinto a Bussines.sacarBoleto() colocas en Cliente un metodo abstracto sacarBoleto() y como es abstracto no tiene implementación asi cuando uses cliente.sacarBoleto() la ligadura dinámina que esta dada por defecto en Java (no hay que poner virtual ni nada asi) hace lo suyo y vos tenes el sacarBoleto() que corresponde. Espero que te sirva y que no me este equicanco.