////////////////////////////////////////////////////////////////////////////////
//  << j243a.java >>
//
//  クラス(4):継承(オーバーライド)
//
//  オーバーライドを確認する。
//
//  (1)子クラスで親クラスと同じ名前のフィールド変数を定義。
//  (2)子クラスで親クラスのメソッドmをオーバーライド。
//  (3)子クラスのオブジェクトobjcの作成。
//  (4)親クラスと同じ名前のフィールド変数の参照。
//  (5)オーバーライドした子クラスのメソッド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)");
  }
}

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

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

    System.out.println("(4)objc.a:" + objc.a); //(4)

    System.out.print("(5)objc.m():");
    objc.m(); //(5)

  }

}
実行結果
% javac j243a.java
% java j243a
(4)objc.a:456
(5)objc.m():オーバーライドした子クラスのメソッド(m)