Sobre a escalação de subclasse a superclasse em 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 o resultado seja:

Método de chamada do carro: a cor é vermelha

Método de chamada da BMW: a cor é preto

Método de chamada do carro: a cor é preta

Mas o resultado que tenho é:

Método de chamada do carro: a cor é vermelha

Método de chamada da BMW: a cor é preto

Método de chamada da BMW: a cor é preto

Onde estou errado? E como posso usar o método da superclasse para obter os dados em um objeto de subclasse? Eu posso escrever umtoCar() método na classe BMW para fazer isso. Mas por que o elenco não funciona? Obrigado pela frente!

ESTÁ BEM! Obrigado!

Eu entendi porque o elenco não funciona.

Então, eu adiciono um método no BMW toCar () para obter o resultado que quero.

questionAnswers(5)

yourAnswerToTheQuestion