////////////////////////////////////////////////////////////////////////////////
//  << j243b.java >>
//
//  クラス(4):継承(オーバーライド)
//
//   オーバーライドされても親クラスのフィールドやメソッドを指定して使うことが
//  できる。
//   直接の親クラスを指すsuperという予約語を使う。
//   super.フィールド名 super.メソッド名 とすればよい。
//
//  オーバーライドを確認する。
//
//  (1)子クラスで親クラスと同じ名前のフィールド変数を定義。
//  (2)子クラスで親クラスのメソッドmをオーバーライド。
//  (3)子クラスのオブジェクトobjcの作成。
//  (4)親クラスのフィールドとメソッドmを復元。
//
///////////////////////////////////////////////////////////////////////////////

class Parent {
  int a = 123; 
  void m() {
    System.out.println("親クラスのメソッド(m)");
  }
}

class Child extends Parent {
  int a = 456; //(1) 
  void m() { //(2)
    System.out.println("子クラスでオーバーライドしたメソッド(m)");
    System.out.println("a = " + a);
  }
  void mm() { //
    System.out.println("super.a = " + super.a); //(4)
    System.out.print("super.m():");
    super.m(); //(4)
  }
}

class j243b {
  public static void main(String args[]) {

    Child objc = new Child(); //(3)

    System.out.println("(4)");
    objc.mm();

  }

}
実行結果
% javac j243b.java
% java j243b
(4)
super.a = 123
super.m():親クラスのメソッド(m)