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();
}
}
我期望的结果是:
从Car类调用方法:颜色为红色
从BMW类调用方法:颜色为黑色
从Car类调用方法:颜色为黑色
但是,我得到的结果是:
从Car类调用方法:颜色为红色
从BMW类调用方法:颜色为黑色
从BMW类调用方法:颜色为黑色
我错在哪里了? 如何使用超类中的方法来获取子类对象中的数据? 我可以在BMW类中编写一个toCar()方法来实现这一点。 但是,为什么强制类型转换不起作用? 提前感谢!
好的!谢谢你!
我知道为什么强制类型转换不起作用了。
因此,我在BMW中添加了一个toCar()方法来获得我想要的结果。