平成18年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
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のメンバではないので、コンパイル時にはエラーになる。
Ama() はクラスBのスーパークラス(クラスA) のメンバであるため、
 エラーにならない。
BサブクラスであるクラスBのインスタンスは、スーパークラスの変数に
 代入できる。
C変数 va は vb のメンバをすべて持っているわけではないので、
 コンパイル時の型検査でエラーになる。
D正しい。
 (B)va とすることをキャストと呼ぶ。


EXCELのマクロのご相談なら ファーストマクロ 



W−7 目次 W−9
ファーストマクロ TOPページ