13/01/2015, 04:46
|
| | | Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 8 meses Puntos: 306 | |
Respuesta: [Ayuda]Upcast y downcast Un ejecutivo es un empleado, supón que quieres controlar las vacaciones de todos los empleados.
¿Tendrías una List para los empleados y otro para los ejecutivos? Podrías, pero sería mejor solución tener todos en un mismo List. Por ejemplo
List<Empleado> empleados
Cuando añades ejecutivos a ese listado estás haciendo un upcast, ya que estás diciendo que un Ejecutivo se "comporte" como un Empleado. Cuando lo recuperes de esa lista será un Empleado.
¿Qué sucede si quieres ver el sueldo y resulta que los ejecutivos tienen un bono que no tienen los empleados?
Como lo has recuperado de la lista "es" un empleado, no puedes acceder al bono. Ahí entra el downcast, ya que mediante el cast dirías que un Empleado realmente es un Ejecutivo, y por lo tanto ya podrías acceder al bono.
(Ejecutivo) empleados.get(1)
El downcast tiene un peligro, que el hecho de que sea Empleado no significa que sea un ejecutivo, por lo que es algo que debe ser controlado por el código.
Esto es un ejemplo de para qué sirve, pero tiene más usos. Deberías leer sobre polimorfismo.
__________________ Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe. |