パッケージとは何か?

Javaというより、オブジェクト指向言語の利点は

    • 関数や変数をクラスのメンバーとすることで隠蔽化できる

ということです。これは、名前衝突が起きない(グループで開発していて、関数や変数の名前が同じにならない)というメリットがあります。

しかし、クラス名はどうでしょう?同じクラス名をつけてしまう可能性は大いにありますね。

この問題を解決するのが、パッケージです。そのクラスがどこに属しているのかを、ピリオド「.」で区切った名前(パッケージ名)で定義できます。パッケージ名は、所属する組織のURLやURIに準拠することが多いです。

例) org.ochilab

Javaでは下記のように宣言します。

package org.ochilab;
public class Test {
・・・・・
}

このように書いておくと、このTestクラスは、org.ochilab というパッケージに属してるという意味になります。

注意:パッケージ構造=ディレクトリ構造

Javaの場合、これだけでは終わりません。パッケージの構造は、ディレクトリ(フォルダ)の構造と一致します。ピリオドで区切られた単位でディレクトリになります。例えば、上記の場合、Testクラスを記述している Test.javaは

    • orgというフォルダの中のochilabというフォルダの中に保存されなければなりません

Eclipseだと、その整合性があうように自動修正したり、エラーを指摘したりします。