////////////////////////////////////////////////////////////////////////////////
//  << j271b.java >>
//
//  クラス(7):内部クラス(内部クラスの作成、内部クラスのスコープ)
//
//  内部クラスのスコープを確認する。
//
//  (1)内部クラスの定義。
//     クラスメソッドmainから呼ばれているのでstatic宣言は必要。
//  (2)内部クラスCのオブジェクトobjiの作成
//  (3)内部クラスINCのフィールドsincをクラスj271bのメソッドmainから参照する。
//  (4)内部クラスINCのメソッドmincをクラスj271bのメソッドmainから呼び出す。
//  (5)クラスj271bのフィールドsを内部クラスから参照する。
//  (6)クラスj271bのメソッドmを内部クラスから呼び出す。
//
////////////////////////////////////////////////////////////////////////////////

class j271b {

  static String s = "クラスj271b内のフィールド変数";
  static String m() {
    return "クラスj271b内のメソッドm";
  }             

  public static void main(String args[]) {

    INC obji = new INC(); //(2)

    System.out.println("(3)obji.sinc = " + obji.sinc); //(3)

    System.out.println("(4)obji.minc():"); obji.minc(); //(4)

  }

  //(1)
  static class INC { 
    String sinc = "内部クラス内のフィールド変数";
    void minc() {
      System.out.println("(5)s = " + s); //(5)
      System.out.println("(6)m():" + m()); //(6)
    }
  }                        

}
実行結果
% javac j271b.java
% java j271b
(3)obji.sinc = 内部クラス内のフィールド変数
(4)obji.minc():
(5)s = クラスj271b内のフィールド変数
(6)m():クラスj271b内のメソッドm