import文 と package文

 import と package はクラス定義の外で用いられるキーワードです。

 importは、バイトコードをクラスライブラリ内で探索するための パッケージの情報を与えます。 パッケージの階層構造はファイルシステムのディレクトリ構造に対応します。 java.awt.image.ImageObserverのように各ディレクトリの区切りを ≪ .≫で表します。 探索のルート・ディレクトリはクラスパスで指定されたディレクトリです。 (デフォルトは、カレント・ディレクトリと JDKの標準クラスライブラリが 置かれたディレクトリ) 注意:

  1. パッケージの階層構造(ディレクトリ構造)は クラスの親子関係の階層とは全く無関係です。
  2. JDKのクラス・ライブラリは アーカイブ形式に圧縮された形式で使用するのが普通です。 したがってディレクトリ構造を実際のファイル・システムの中で見ることはできません。
  3. importはロードを実行させる命令ではありません。 探索の情報を提供するだけです。 importを使用する代わりにソース・コードの中で パス名を直接指定してもかまいません。次の2つ例は同じ意味です。

/* import を使った場合 */
import java.applet.Applet;
public class NewClass extends Applet {
                :

/* import を使わない場合 */
pulic class NewClass extends java.applet.Applet {
                :

 packageは、クラスあるいはコンパイル単位が所属するパッケージ名を 指定するのに用います。 クラスの集まりをライブラリとして名前を付けて管理し、 再利用しやすくするための機能です。 小規模のプログラムでは必須の命令ではありません。 しかし開発対象が大きくなってきたら、 クラスをグループ化して管理する意味でも、 クラス名の衝突などを防ぐ意味でも package文が必要になってきます。 package 命令は他のすべての命令より先に置かれなくてはいけません。


package  mytool;
import  java.applet.Applet;
public class NewClass extends Applet {
                :