Acerca del casting de subclase a superclase en JAVA
public class Car {
String color;
public void thisIs(){
System.out.println("Calling method from Car: the color is " + color);
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class BMW extends Car {
public void thisIs(){
System.out.println("Calling method from BMW: the color is " + color);
}
public Car toCar(){
Car newCar = new Car();
newCar.setColor(this.color);
return newCar;
}
}
public class AbstractTest {
public static void main(String args[]){
Car aCar = new Car();
aCar.setColor("Red");
aCar.thisIs();
BMW aBMW = new BMW();
aBMW.setColor("Black");
aBMW.thisIs();
//Car aaCar = new Car();
//aaCar = (Car)aBMW;
//aaCar.thisIs();
Car aaCar = aBMW.toCar();
aaCar.thisIs();
}
}
Espero que el resultado sea:
Método de llamada desde el coche: el color es rojo
Método de llamada de BMW: el color es negro
Método de llamada desde el coche: el color es negro
Pero, el resultado que obtuve es:
Método de llamada desde el coche: el color es rojo
Método de llamada de BMW: el color es negro
Método de llamada de BMW: el color es negro
Donde me equivoco ¿Y cómo puedo usar el método de la súper clase para obtener los datos en un objeto de subclase? Puedo escribir untoCar()
Método en clase BMW para hacer esto. Pero, ¿por qué el casting no funciona? Gracias por delante
¡DE ACUERDO! ¡Gracias!
Tengo por qué el casting no funciona.
Entonces, agrego un método en BMW toCar () para obtener el resultado que quiero.