////////////////////////////////////////////////////////////////////////////////
//  << j244bjava >>
//
//  クラス(4):継承(オーバーライド、性質2)
//
//  Child objc = new Child();
//    Parent objp = objc;
//
//  (性質2) 親クラスと子クラスが同じフィールドaをもつとき、objp.aで親クラスの
//          フィールドが参照される。
//
//  (1)子クラスのオブジェクトobjcの作成。
//  (2)子クラスのオブジェクトobjcを親クラスの変数objpに代入。
//  (3)親クラスのオブジェクトでフィールド変数aの参照。
//  (4)子クラスのオブジェクトでフィールド変数aの参照。
//
///////////////////////////////////////////////////////////////////////////////

class Parent {
  int a = 111; // 子クラスと同じ名前のフィールド。
}

class Child extends Parent {
  int a = 222; // 親クラスと同じ名前のフィールド。
}

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

    Child objc = new Child(); //(1)
    Parent objp = objc; //(2)

    System.out.println("(3)objp.a =" + objp.a);
    System.out.println("(4)objc.a =" + objc.a);

  }

}
実行結果
% javac j244b.java
% java j244b
(3)objp.a =111
(4)objc.a =222