次の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 |