Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/01/2015, 14:17
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años
Puntos: 454
Respuesta: [Ayuda]Upcast y downcast

Hola:

No es habitual hacerlo de forma tan directa, como bien dices, si quieres un empleado, lo guardas en una variable empleado y listo.

Lo mas habitual suele ser tener un "almacen" de Persona en el que metes, mezclados, cosas como Empleado, Supervisor, Jefe, Director, etc, todos ellos que heredan de Persona.

LinkedList<Persona>lista = new LinkedList<>();
lista.add(new Empleado());
lista.add(new Persona());
lista.add(new Director());
...

cuando recorres esa lista y necesitas métodos que todos tienen porque heredas de Persona, no hace falta nada especial.

Código Java:
Ver original
  1. for (Persona p: lista) {
  2.    System.out.println(p.getNombre());
  3. }

Pero imagina que te piden que escribas el sueldo de los empleados y getSueldo() solo lo tienen los empleados. No te queda mas que hacer algo como esto

Código Java:
Ver original
  1. for (Persona p : lista) {
  2.    if (p instanceof Empleado) {
  3.         Empleado e = (Empleado)p;
  4.         System.out.println (e.getSueldo());
  5.    }
  6. }

como ves, se tiene un empleado guardado en una variable de tipo Persona y hay que hacer el cast para poder llamar a getSueld().

Se bueno.
__________________
Apuntes Java
Wiki de Programación