你有一系列不同种类的物品吗?

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)

除了访问者模式之外,没有其他解决方法。