viernes, 5 de marzo de 2010

Cast implicito y explicito en Java (05.03.02)

El cast es implicito al convertir una clase hijo a una la clase padre.
El cast debe ser explicito al convertir de una clase padre a una clase hijo.

public class Movil {
String nombre;
Movil() { nombre = "Movil"; }
}
public class MovilPesado extends Movil {
MovilPesado() { nombre = "MovilPesado"; }
}
public class Camion extends MovilPesado {
Camion() { nombre = "Camion"; }
}
public class MovilLigero extends Movil {
MovilLigero() { nombre = "MovilLigero"; }
}
public class TestInstanceOfCast {
public static void main(String[] args) {
static boolean resultado;
static MovilPesado pesado = new MovilPesado();
static Camion volvo = new Camion();
static MovilPesado tren = null;
resultado = pesado instanceof MovilPesado;
System.out.print("pesado es un MovilPesado: " + resultado + "\n");
resultado = volvo instanceof MovilPesado;
System.out.print("volvo es un MovilPesado: " + resultado + "\n");
resultado = pesado instanceof Camion;
System.out.print("pesado is a Camion: " + resultado + "\n");
resultado = tren instanceof MovilPesado;
System.out.print("tren es un MovilPesado: " + resultado + "\n");
pesado = volvo; //Cast implicito. Un hijo se convierte en padre.
volvo = (Camion) pesado; //Cast explicito. Un padre se convierte en hijo.
}
}

Cast implicito en Java (05.03.03)

El cast es implicito al convertir un hijo en padre. Revise aqui el paso de parametros al metodo testOperador.
Para convertir un padre a hijo, se usa cast explicito

public class TestOperador {
public static void main (String[] args) {
Pelicula3 oscar = new Pelicula3();
Equipo3 vhs = new Equipo3();
Juego3 mu = new Juego3("Nintendo");
Libro3 quijote = new Libro3();
testOperador(oscar);
testOperador(vhs);
testOperador(mu);
testOperador(agua);
}
public static void testOperador (Item3 articulo) {
if (articulo instanceof Juego3) {
Juego3 juego = (Juego3) articulo;
System.out.println(juego.getFabricante());
}
else {
System.out.println("No tiene Fabricante");
}
}
}
Compartir:

1 comentario: