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