Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/07/2012, 14:01
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: polimorfismo java

Hola:

Imagina una lista o array de algo y un bucle normal

Código java:
Ver original
  1. for (int i=0; i<array.size(); i++) {
  2.       .... array[i] ....
  3. }

Desde java 5 existe una forma más cómoda de recorrer los arrays y listas (colecciones en general), que es la sintaxis que ves ahí. Si el array/lista es de Empleado, el for se puede poner así

Código java:
Ver original
  1. for (Empleado empleadoActual : array ) {
  2.     ... empleadoActual ...
  3. }

es decir, recorre el array y en cada iteración mete en empleadoActual de tipo Empleado el elemento del array/lista que toca en cada iteración.

En cuanto a la conversión, si array es de tipo Empleado, puedes meter en él clases hijas de Empleado sin problemas, como EmpleadoBaseMasComision. El problema es cuando los recuperas. Como el array es de Empleado, te devuelve Empleado y no puedes usar métodos o cosas propias de EmpleadoBaseMasComision. La forma de volver a convertir ese elemento a su clase hija es con el paréntesis

EmpleadoBaseMasComision empleado= (EmpleadoBaseMasComision) empleadoActual;

Esto sólo funciona si lo que hay en ese elemento del array es realmente un EmpleadoBaseMasComision, si no lo es (es otro tipo de clase hija de Empleado), te dará error cuando ejecutes el programa.

Se bueno.
__________________
Apuntes Java
Wiki de Programación