我有一个关于在简单继承结构中使用 ArrayLists 等数据结构的问题。我很难措辞:希望你能理解我想问的问题。
我有一个超类Parrot
和一个PirateParrot
扩展的子类Parrot
。在Parrot
中,我有以下方法:
public String speak() {
int rand = (int)(Math.random() * sounds.size());
return sounds.get(rand);
}
它在类sounds
中创建的 ArrayList 中返回一个随机字符串。Parrot
如果我创建一个PirateParrot
被调用的单独实例polly
,它也有自己的 ArrayList,并尝试在polly.speak();
没有任何隐式实现的情况下调用类中的 speak 方法,我会在线程“main”java.lang.IndexOutOfBoundsException: Index 中PirateParrot
抛出一个“异常” :0,尺寸:0"
Parrot
如果我专门从into复制/粘贴 speak() 方法PirateParrot
,则代码可以正常编译并正常运行。之前的问题到底是什么?有没有办法让它正确运行,而不必将 speak() 方法复制/粘贴到 中PirateParrot
?谢谢!