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();
}
}
結果は次のようになると思います。
車からの呼び出し方法:色は赤
BMWからの呼び出し方法:色は黒です
車からの呼び出し方法:色は黒です
しかし、私が得た結果は次のとおりです。
車からの呼び出し方法:色は赤
BMWからの呼び出し方法:色は黒です
BMWからの呼び出し方法:色は黒です
私はどこが間違っていますか?また、スーパークラスのメソッドを使用してサブクラスオブジェクトのデータを取得するにはどうすればよいですか?toCar()
これを行うためにBMWクラスでメソッドを書くことができます。しかし、なぜキャストが機能しないのですか?よろしくお願いします!
わかった!ありがとうございました!
キャストが機能しない理由がわかりました。
そこで、BMW toCar()にメソッドを追加して、必要な結果を取得します。