平成21年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−6
次のJavaプログラムを実行した時に出力される結果を、次の@〜Dの
中から選べ。

Class A {
 int f() {
  return 1;
 }
}

Class B extends A {
 int f() {
  return 2;
 }

 int g() {
  return this.f();
 }

 int h() {
  return super.f();
 }
}

Class C extends B {
 int f() {
  return 3;
 }
}

Class Main {
 public Static void main (String[] argv) {
  C c;
  C = new C();
  System.out.println (c.g() ++ "," ++ c.h() );
 }
}

 @ 2、1   A 2、2  B 3、1  C 3、2  D 3、3



【正解】 B

c.g() は、クラスBに定義された g() を呼び出し、
this.f() を返す。 this.f() は呼び出し元のクラスCのメソッド f() を
呼び出す。従って、c.g() =
である。

c.h()は、クラスBに定義された h()を呼び出し、
super.f() を返す。super.f() は、スーパークラスのAのメソッド f() を
呼び出す。従って、 c.h() =
である。

※インクリメント演算子 ++ があるが、
スペースで区切られているのでエラーになるはず。
もしスペースがなければ
答えは4、1になると考えられる。
c.g()++ = 3+1 =

++c.h() =
を出力後に +1する。

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



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