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