gpt4 book ai didi

java - 你能有一组不同种类的对象吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:42 24 4
gpt4 key购买 nike

我知道您只能拥有特定类型的数组(例如 String、int、Student 等)。我想知道这在继承的情况下是否成立 - 即扩展 Vehicle 的 Bicycle 对象是否可以与其他对象(如 Bus 对象)一起放置在 Vehicle 数组中。

这是我的代码:

public class Test{
public static void main(String[] args) {

Bus bus1 = new Bus();
Bicycle bike1 = new Bicycle();
bike1.changeGear(true);
Bus bus2 = new Bus();
Vehicle[] myFleet = {bus1, bike1, bus2}; // Note that Vehicle is an abstract class
for (Bus v: myFleet){ // Trying to access every bus in the Vehicle array. I already
v.issueTicket(1.50); // tried to get the computer to treat myFleet as a Bus array - doesn't
System.out.println(v); // work, sadly.
}
}

}

注意这是Java语言

最佳答案

你有一个父类(super class)型的数组。

for 遍历可迭代对象(此处为数组)中的所有项目。

由于数组中可以有 BicycleBus 实例(或什至其他类型,目前未知),你不能将其视为 Bus 数组。

你可能想要的是:

for (Vehicle v : myFleet) {
if (v instanceof Bus) {
Bus b = (Bus)v;
b.doSomeSpecialThingsForABus();
}

}

除了 visitor pattern 之外,没有其他好的解决方法。也许吧。

关于java - 你能有一组不同种类的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362129/

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