Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/07/2012, 15:51
Avatar de oscard41
oscard41
 
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años
Puntos: 8
Respuesta: polimorfismo java

Cita:
Iniciado por chuidiang Ver Mensaje
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.

Una ultima pregunta que es mas recomendable ¿hacer el polimorfismo igual que lo que me acabas de explicar o crear variables de las clases para acceder a los metodos.... osea por lo menos la clase EmpleadoBaseMasComision crear el objeto "empleado" y una vez con "empleado" acceder a las variables de instancias por medio de los metodos?