Ver Mensaje Individual
  #12 (permalink)  
Antiguo 14/01/2015, 03:31
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 2 meses
Puntos: 182
Respuesta: [Ayuda]Upcast y downcast

Cita:
Entonces el upcast y el downcast sirven para usar metodos de otras clases,sirve para escribir menos codigo?
siempre cuando entre ellas tenga una relacion de herencian en comun.
Ese es el fin del casteo?
Si, pero no exactamente. El polimorfismo permite hacer cosas que no serian posibles (o serian muy muy complicadas) de otra manera.
Te he hecho un ejemplo para que lo estudies que creo que es bastante explicativo:

Código Java:
Ver original
  1. public class TestPolimorfismo {
  2.  
  3.     public static void main(String[] args) {
  4.         List<Animal> animales = Arrays.asList(new Animal[]{new Caballo(), new Humano(), new Paloma(), new Humano(), new Paloma()});
  5.  
  6.         //Hablar (todos lo hacen, luego no hay que preocuparse si no todos son del mismo tipo)
  7.         for (final Animal animal : animales) {
  8.             animal.habla();
  9.         }
  10.  
  11.         //Que vuelen los que pueden!
  12.         for (final Animal animal : animales) {
  13.             if (animal instanceof Ave) {
  14.                 ((Ave) animal).vuela();
  15.             }
  16.         }
  17.     }
  18. }
  19.  
  20. interface Animal {
  21.  
  22.     void habla();
  23. }
  24.  
  25. interface Ave extends Animal {
  26.  
  27.     void vuela();
  28. }
  29.  
  30. class Caballo implements Animal {
  31.  
  32.     @Override
  33.     public void habla() {
  34.         System.out.println("HIIIIJJAAAAAA");
  35.     }
  36. }
  37.  
  38. class Humano implements Animal {
  39.  
  40.     @Override
  41.     public void habla() {
  42.         System.out.println("HOLAQUEASE");
  43.     }
  44. }
  45.  
  46. class Paloma implements Ave {
  47.  
  48.     @Override
  49.     public void habla() {
  50.         System.out.println("PRRRRUP");
  51.     }
  52.  
  53.     @Override
  54.     public void vuela() {
  55.         System.out.println("Paloma vuela y hace PRRRRUP ");
  56.     }
  57. }

Código Salida Consola:
Ver original
  1. HIIIIJJAAAAAA
  2. HOLAQUEASE
  3. PRRRRUP
  4. HOLAQUEASE
  5. PRRRRUP
  6. Paloma vuela y hace PRRRRUP
  7. Paloma vuela y hace PRRRRUP

Un saludo
__________________
If to err is human, then programmers are the most human of us