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.

Respuestas a la pregunta(5)

Su respuesta a la pregunta