gpt4 book ai didi

java - 关于在 JAVA 中将子类转换为父类(super class)

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:36 25 4
gpt4 key购买 nike

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();
}
}

我希望结果是:

Calling method from Car: the color is Red

Calling method from BMW: the color is Black

Calling method from Car: the color is Black

但是,我得到的结果是:

Calling method from Car: the color is Red

Calling method from BMW: the color is Black

Calling method from BMW: the color is Black

我哪里错了?以及如何使用父类(super class)中的方法获取子类对象中的数据?我可以在 BMW 类中编写一个 toCar() 方法来执行此操作。但是,为什么类型转换不起作用?先谢谢了!

好的!谢谢!

我知道为什么转换不起作用。

所以,我在 BMW toCar() 中添加了一个方法来获得我想要的结果。

最佳答案

类型转换对象不会改变对象的性质。它仍然是 BMW 对象;强制转换只是告诉编译器将其视为 Car 对象。

只要我们讨论继承主题:就没有必要将颜色变量或 get/setColor 方法同时放入父类(super class)和子类中。将它们放在汽车类中意味着它们在任何子类中都可用;它们是多余的,在子类中有点困惑。我会把它们完全去掉。

关于java - 关于在 JAVA 中将子类转换为父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com