////////////////////////////////////////////////////////////////////////////////
//  << j241d.java >>
//
//  クラス(4):継承(メソッド)
//
//  メソッドの継承を確認する。
//
//   メソッドを呼び出すと、自分のクラスから探し、もしなければ親クラスを探す。
//  そこにもなければ、そのまた親クラスを探すことを見つかるまで続ける。
//
//  (1)祖先クラスのインスタンスメソッドの定義。
//  (2)祖先クラスのクラスメソッドの定義。
//  (3)子クラスChildのオブジェクトobjの作成。
//  (4)祖先クラスで定義したインスタンスメソッドの呼び出し。
//  (5)祖先クラスで定義したクラスメソッドの呼び出し。
//
///////////////////////////////////////////////////////////////////////////////

// 祖先クラスの定義。
class Ancestor {
  void am() { //(1)
    System.out.println("祖先クラス(Ancestor)のインスタンスメソッド(am)");
  }
  static void asm() { //(2)
    System.out.println("祖先クラス(Ancestor)のクラスメソッド(asm)");
  }
}

// 親クラスの定義。
class Parent extends Ancestor {
  // 内容なし。
}

// 子クラスの定義。
class Child extends Parent {
  // 内容なし。
}

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

    Child obj = new Child(); //(3)
   
    System.out.print("(4)obj.am():");
    obj.am(); //(4)

    System.out.print("(5)obj.asm():");
    obj.asm(); //(5)
    System.out.print("(5)Child.asm():");
    Child.asm(); //(5)

  }

}
実行結果
% javac j241d.java
% java j241d
(4)obj.am():祖先クラス(Ancestor)のインスタンスメソッド(am)
(5)obj.asm():祖先クラス(Ancestor)のクラスメソッド(asm)
(5)Child.asm():祖先クラス(Ancestor)のクラスメソッド(asm)