Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/09/2009, 07:00
Avatar de Fuzzylog
Fuzzylog
 
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Visibilidad de clases abstractas en packages

A ver, creo que no me habeis entendido:

Lo que yo hago es instanciar la clase plantilla, que no es abstracta, pero que genera un array (en un principio vacío) de elementos de tipo empleado (que es la clase abstracta).

Ahora bien, para añadir un empleado a esta lista, no puedo hacerlo directamente, como decís, pero lo que hago es instanciar otra clase derivada de Empleado (Jardinero o Comercial por ejemplo).

así:

Jardinero emp1 = new Empleado(arg1, arg2);
o
Comercial emp2 = new Empleado(arg1, arg2);

Y luego haría:

plantilla.empleados[0] = plantilla.añadirEmpleado(emp1);
plantilla.empleados[1] = plantilla.añadirEmpleado(emp2);

Ahora bien, el problema viene al intentar acceder al elemento plantilla.empleados[i], y a los métodos asociados a la clase Empleado, en el caso de que tanto la clase Plantilla como la clase Empleado y sus clases hijas se encuentren en un package que importo desde la clase Gerencia (que es la que está directamente en la Solución del proyeto y que contiene el main() ).

Sin embargo, cuando tengo todas las clases directamente en la solución del proyecto, puedo acceder tanto a empleados[i] como a sus métodos... getSalario(etc). Y lo que me interesa saber es por qué se produce este fenómeno.

Espero que ahora me haya explicado.