Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/07/2010, 13:54
Avatar de Xerelo
Xerelo
 
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 8 meses
Puntos: 306
Respuesta: ayuda con polimorfismo en java

Tal y como lo tienes no está aplicando polimorfismo en ningún sitio.

Imagínate que quieres una lista que contenga los distintos tipos de empleados, y que cuando saques cualquier elemento de la lista le puedas aplicar un método (en tu caso supongo que preparoPago() )

Por ser de distintas clases (aunque relacionadas) necesitas guardarlos como si fueran Object, el problema es que a la hora de sacarlos, necesitarás hacerle un cast para convertirlos en el tipo de objeto que quieres usar y así poder llamar a sus métodos. Esto es un coñazo ya que tendrías que detectar de que tipo es cada elemento para poder hacerle el cast adecuado.

La otra solución, es utilizar polimorfismo. Guardas todos los elementos como si fuesen Empleado_1, de forma que al sacarlos puedes hacer un cast para referenciarlos como objetos de la clase padre y llamar a su método (tiene que existri en la clase padre). Si usas las etiquetas <Empleado_1> al declarar la lista, ni siquiera necesitas el cast.

Código:
Porhoras_1 horas1 = new Porhoras_1()
Asalariado_1  asal1 = new  Asalariado_1()

Rellenas con los datos que quieras, y procedes al polimorfismo/cast

Empleado_1 e1 = horas1
Empleado_1 e2 = asal1

e1.preparoPago();
e2.preparoPago();
Java detecta automáticamente qué tipo de clase es, y llama al preparoPago() que le corresponde, pero ojo, desde las referencias de Empleado_1 sólo podrás llamar a métodos que existan en Empleado_1, aunque el objeto se de una clase derivada y posea más métodos.