単純な継承構造でのArrayListsなどのデータ構造の使用について質問があります。私はそれを表現するのに苦労しています:うまくいけば、あなたは私が尋ねようとしていることを理解することができます。
を拡張するスーパークラスParrot
とサブクラスがあります。では、次の方法があります。PirateParrot
Parrot
Parrot
public String speak() {
int rand = (int)(Math.random() * sounds.size());
return sounds.get(rand);
}
これは、クラスsounds
で作成されたと呼ばれるArrayList内のランダムな文字列を返します。Parrot
独自のArrayListを持つPirateParrot
calledの別のインスタンスを作成し、クラスのspeakメソッドを暗黙的に実装せずに呼び出そうとすると、 「スレッド内の例外」main「java.lang.IndexOutOfBoundsException:Index」がスローされます。 :0、サイズ:0polly
polly.speak();
PirateParrot
特にspeak()メソッドをからにコピーして貼り付けると、コードは正常にコンパイルされ、正しく実行されますParrot
。PirateParrot
以前の問題は正確には何でしたか?talk()メソッドをコピーして貼り付けることなく、これを正しく実行する方法はありPirateParrot
ますか?ありがとう!