Dan*_*tar 5 java arrays abstract
我知道你只能拥有某种类型的数组(例如String,int,Student等).我想知道这是否适用于继承 - 即扩展Vehicle的Bicycle对象是否可以与其他东西一起放置在Vehicle数组中,如Bus对象.
这是我的代码:
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.
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是Java语言
小智 5
您有一个超级类型的数组。
for 遍历可迭代对象(此处为数组)中的所有项目。
由于数组中可以有Bicycle或个Bus实例(或什至其他类型,当前未知),因此您不能将其视为Bus数组。
您可能想要的是:
for (Vehicle v : myFleet) {
if (v instanceof Bus) {
Bus b = (Bus)v;
b.doSomeSpecialThingsForABus();
}
}
Run Code Online (Sandbox Code Playgroud)
除了访问者模式之外,没有其他解决方法。