パッケージの宣言

package宣言の書式

package パッケージ名;

パッケージ名は小文字で書くことが推奨されている。

パッケージ宣言は一つのソースファイルに一つ。2つ以上宣言することはできない。

package hoge;
package hoge2; //エラー
...........

パッケージ宣言はソースファイルの一番上で宣言する。

package hoge; //OK

import java.util.Scanner;

例えば、import文のあとに書くとエラーになる。

import java.util.Scanner;

package hoge;  //エラー

パッケージ宣言がないと、そのソースファイルは無名パッケージに属する。

つまり、パッケージ宣言がなくてもエラーにならない。
でも、次で述べるように、できるだけパッケージに所属させた方が良い。

クラス名の重複を回避するためにも、クラスはパッケージに所属させることが推奨されている。

package hoge;

public class Test {
  .....
}
package hoge2;

public class Test {
  .....
}

パッケージhogeに属するクラスTest、パッケージhoge2に属するクラスTestと同名のクラスをパッケージにより区別することができる。

パッケージ名はそのソースファイルが所属するディレクトリの名前にするのが基本的。

ディレクトリaの中にソースファイルを作る場合は、

package a;

というパッケージ宣言をソースファイルの冒頭でする。

ディレクトリaのサブディレクトリbの中にソースファイルを作る場合は、

package a.b;

実際にパッケージを作って呼び出してみる。

ファイルの階層は以下のとおり。

  1 import message.Hello; //パッケージmessageのクラスhelloを単純名で利用するため単一インポート宣言
  2 
  3 class Main { 
  4   
  5   public static void main(String[] args) {
  6     Hello hello = new Hello();
  7     hello.print();
  8   }
  9   
 10 }   
  1 package message; //ディレクトリmessageに所属するのでパッケージ名もmessageに
  2 
  3 public class Hello {
  4   //フィールド
  5   
  6     
  7   //コンストラクタ
  8     
  9     
 10   //メソッド
 11   public void print() {
 12     System.out.println("Hello World");
 13   }
 14 
 15 }

実行

$ javac message/Hello.java
$ javac Main.java
$ java Main
Hello World
$