Java 基礎問題5 平成16年度秋期問8 解説
解説 |
---|
a: aは抽象クラスStoreのputメソッドでDataStoreExceptionをスローする時の条件である。 trueの場合にメッセージに"overflow"を指定したDataStoreExceptionをスローする。 問題文の(1)より、 >格納できるオブジェクトの個数の上限は50である。 >それを超えて格納しようとしたときはDataStoreExceptionを投げる。 とあり、選択肢を見るとフィールドint indexとObject[] dataのlengthの比較処理である。 プログラムの内容から >Object[] data = new Object[50]; で、data.lengthは50。indexは初期値0でputでインクリメント、 getでデクリメントされるため、 >エ index >= data.length が正解。 (data[49](50番目)にオブジェクトを格納した後で、 indexが50にインクリメントされ、次回のputで例外となる) b: bは抽象クラスStoreのsizeメソッドで戻り値をreturn文に指定する部分である。 問題文の(1)より、 >格納されているオブジェクトの個数を返す。オブジェクトが格納されていないときは0を返す。 とあり、indexは初期値0でputでインクリメントされるため >エ index が正解である。 c: cはStoreのサブクラスFifoStoreのgetメソッド内で、 getの戻り値となるvalueにdata[0]を設定した後、 Object[] dataに格納してあるオブジェクトのインデックスを -1ずつ変更する処理である。 オブジェクトが格納されているのは、data[0]~data[index-1]であり、 >data[i] = data[i + 1]; の処理をiを0~index-2の範囲で行うことで、 格納してある全てのオブジェクトのインデックスの変更ができる。 >イ int i = 0; i < index - 1; i++ が正解。 d: dはStoreTestクラスのprintDataメソッドの引数の型である。 printDataメソッドの呼び出し元を見ると、 >printData(fifo); >printData(lifo); の2箇所であり、それぞれの型はfifoはFifoStore、lifoはLifoStoreである。 引数の型としてFifoStore、LifoStoreのどちらでも指定可能とするためには、 それぞれの型のスーパークラスであるStoreを引数の型とする必要があり、 >エ Store が正解。 |
匿名様 ご投稿
メニューへ戻る