本文へスキップ

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


Since 2016.4.19

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

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() はクラスB のメソッド f() を呼び出す。
従って、c.g() = 2である。
出力時に c.g()++ によって、2+1 = 3となる。

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

W−5 目次 W−7