////////////////////////////////////////////////////////////////////////////////
//  << j282d.java >>
//
//  クラス(8):パッケージ(パッケージの利用)
//
//  パッケージの利用を確認する。
//
// ●利用法
//
//   % javac j282d.java
//
//      カレントディレクトリからパッケージ(pack2)を探すので、クラスファイル
//      (j282c.class)を見つけ出せなくてエラーになる。
//
//   % javac -classpath c:\tmp j282d.java
//
//   classpathオプションを付けてパッケージ(pack2)の存在する場所を指定する。
//      ディレクトリ(c:\tmp)からパッケージ(pack2)を探すので、クラスファイル
//      (j282c.class)を見つけ出せる。
//      カレントディレクトリにクラスファイル(j282d.class)が作成される。
//
//   % java j282d
//
//      カレントディレクトリからパッケージ(pack2)を探すので、クラスファイル
//      (j282c.class)を見つけ出せなくてエラーになる。
//
//  % java -classpath c:\tmp;. j282d 
//
//   classpathオプションを付けてパッケージ(pack2)の存在する場所を指定する。
//      ディレクトリ(c:\tmp)からパッケージ(pack2)を探すので、クラスファイル
//      (j282c.class)を見つけ出せる。
//      また、ピリオドでカレントディレクトリを指定しているので、クラスファイル
//      (j282d.class)を見つけ出せる。
//      
//  (1)パッケージを指定したクラスの取り込み。
//  (2)クラスj282c内のフィールド変数aには、指定がないので、
//     obj.aで参照できない。
//  (3)クラスj282c内のpublic指定のあるフィールド変数paには、
//     public指定があるので参照できる。
//  (4)クラスj282c内のメソッドm()には、指定がないので、呼び出せない。
//  (5)クラスj282c内のメソッドpm()には、public指定があるので、呼び出せる。
//
////////////////////////////////////////////////////////////////////////////////

import pack2.j282c; //(1)パッケージの取り込み。

class j282d {
  public static void main(String args[]) {
  
    j282c obj = new j282c();

    System.out.println("(2)obj.aはエラー");//(2)
 
    System.out.println("(3)obj.pa = " + obj.pa); //(3) 

    System.out.println("(4)obj.m()はエラー"); //(4)

    System.out.println("(5)obj.pm():" + obj.pm()); //(5)

  }

}
実行結果
% javac -classpath c:\tmp j282d.java
% java -classpath c:\tmp;. j282d
(2)obj.aはエラー
(3)obj.pa = 222
(4)obj.m()はエラー
(5)obj.pm():public指定のあるメソッド(pm)