本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成18年度 技術士第一次試験問題【専門科目】

W−8

Java言語についての次の説明のうち、最も適切なものを選べ。ただし、クラスA, Bの定義は次のようであるとし、変数 va の型はクラスA、変数 vb の型はクラス B, メソッド mb はクラスA 内では宣言されていないものとする。
 Class A {
  int ma () { ... }
 }
 Class B extends A {
  int mb () { ... }
 }

@ メソッド呼び出し va.mb() は、コンパイル時にはエラーにならない可能性がある。

A メソッド呼び出し vb.ma() は、実行時に必ずエラーになる。

B 変数 va にはクラス B のインスタンスは代入できない。

C 代入文vb = va; は、コンパイル時の型検査ではエラーにならない。

D 代入文va = (B)va; は、実行時にエラーになる可能性がある。


正解

D


解説

@ mb() はクラスAのメンバではないので、コンパイル時にはエラーになる

A ma() はクラスBのスーパークラス(クラスA) のメンバであるため、エラーにならない

B サブクラスであるクラスBのインスタンスは、スーパークラスの変数に代入できる

C 変数 va は vb のメンバをすべて持っているわけではないので、コンパイル時の型検査でエラーになる

D 正しい。(B)va とすることをキャストと呼ぶ。キャストは実行時にエラーになる場合もあるし、ならない場合もある。

W−7 目次 W−9