本文へスキップ

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


Since 2016.4.19

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

W−1

次のJavaプログラムを実行した時に出力される結果を、@〜Dの中から選べ。
Class A {
 int var;
 Void incrVar () {
  var++;
 }
}

Class B extends A {
 void incrVar () {
  var += 2;
 }
}

Class Main {
 public static void main (String [] argv) {
 A a;
 B b, b2;

 b = new B(); b.var = 100;
 b2 = new B(); b2.var = 100;
 a = b2;
 a.incrVar();
 b.incrVar();
 System.out.println(a.var + " " + b.var);
 }
}

@ 100 100

A 101 101

B 101 102

C 102 101

D 102 102


正解

D


解説

Mainプログラムをトレースする。

b = new B();
b.var = 100; ・・・ b.var = 100
b2 = new B();
b2.var = 100; ・・・b2.var = 100
a = b2; ・・・ aとb2は同じオブジェクトになり、aはclass Bとなる。
        a.var = 100
a.incrVar(); ・・・a は class Bだから、
         a.var には 2が足される。.
b.incrVar(); ・・・ b.varには 2が足される。

従って、
a.var = 102
b.var = 102

目次 W−2