Hola:
Si Empleado tiene un metodo() y su clase hija tiene el mismo metodo(), y tienes un EmpleadoBaseMasComision metido en el array de Empleado, puedes hacer perfectamente
Código java:
Ver originalfor (Empleado empleadoActual : empleados){
empleadoActual.metodo();
}
Como Empleado tiene metodo(), puedes llamarlo sin hacer la conversión. Como el objeto realmente es un EmpleadoBaseMasComision, en realidad se está llamando a metodo() de EmpleadoBaseMasComision. Esto es en realidad el polimorfismo, tener una clase hija dentro de una variable del tipo de la clase padre, llamar "aparentemente" al metodo() de padre y en realidad se ejecuta el metodo() de la clase hija.
La conversion es necesaria cuando quieres llamar a un otroMetodo() que tiene la clase hija, pero no existe en la clase padre, entonces
empleadoActual.otroMetodo()
da error, puesto que Empleado no tiene ese metodo, es necesario hacer
((EmpleadoBaseMasComision)empleadoActual).otroMeto do();
Se bueno.