Hola:
Imagina una lista o array de algo y un bucle normal
Código java:
Ver originalfor (int i=0; i<array.size(); i++) {
.... array[i] ....
}
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 originalfor (Empleado empleadoActual : array ) {
... empleadoActual ...
}
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.