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 originalpublic class TestPolimorfismo {
public static void main
(String[] args
) { List
<Animal
> animales
= Arrays.
asList(new Animal
[]{new Caballo
(),
new Humano
(),
new Paloma
(),
new Humano
(),
new Paloma
()});
//Hablar (todos lo hacen, luego no hay que preocuparse si no todos son del mismo tipo)
for (final Animal animal : animales) {
animal.habla();
}
//Que vuelen los que pueden!
for (final Animal animal : animales) {
if (animal instanceof Ave) {
((Ave) animal).vuela();
}
}
}
}
interface Animal {
void habla();
}
interface Ave extends Animal {
void vuela();
}
class Caballo implements Animal {
@Override
public void habla() {
System.
out.
println("HIIIIJJAAAAAA"); }
}
class Humano implements Animal {
@Override
public void habla() {
System.
out.
println("HOLAQUEASE"); }
}
class Paloma implements Ave {
@Override
public void habla() {
System.
out.
println("PRRRRUP"); }
@Override
public void vuela() {
System.
out.
println("Paloma vuela y hace PRRRRUP "); }
}
Código Salida Consola:
Ver originalHIIIIJJAAAAAA
HOLAQUEASE
PRRRRUP
HOLAQUEASE
PRRRRUP
Paloma vuela y hace PRRRRUP
Paloma vuela y hace PRRRRUP
Un saludo