JAVAのパッケージ
パッケージとはクラスのさらに上の概念です。
あるパッケージに属するクラスは、同じ名称であっても別のパッケージのクラスとは別物として扱われます。
「aaa」パッケージの「cde」というクラスと、
「bbb」パッケージの「cde」というクラスは、別のものと認識される。
パッケージは複数あるソースファイルを、同一のパッケージに属するものとして指定することができます。
大規模に開発をおこなったり、既にあるフリーのソースファイルを流用したりする場合には、このパッケージの概念が重要になってきます。
パッケージの設定方法
ソースコードの先頭にパッケージ名を記述することで、そのソースコードに書かれているクラスは、そのパッケージに属していることになります。
package パッケージ名;
abcという名前のパッケージに属するefgというクラスのなかのhij()メソッドを使う場合には、以下のように書きます。
int Hensu = abc.efg.hij();
なお、パッケージ名を指定しない場合には、呼び出し元と同じパッケージ内を探します。
パッケージの命名ルール
パッケージ名は、一般的なルールとして、「ドメインを反対側から記載したもの」ということになっています。
「http://xxx.yyyyy.com」の場合には、「xxx.yyyyy.com」を反対側から記載したものになります。つまり、「com.yyyyy.xxx」です。
ドメインを使う理由は、一意のものになるためです。
パッケージを会社を超えて開発したりする場合、適当に命名していた場合、バッティングする恐れがありますが、ドメインを基準にしていたらバッティングの恐れがなくなるため、このようなルールが一般化されたようです。
パッケージのインポート
ところで、別のパッケージにあるクラスを毎回パッケージ名を指定して呼び出すのは面倒なので、先にそのクラスはパッケージを指定しなくても使えるように読み込んでしまう方法があります。
それをインポートといいます。
インポートをするには、以下のように書きます。
import パッケージ名.クラス名;
インポート文は、パッケージ文の直後に書きます。
例えば、aaaというパッケージにあるbbbクラスのccc()メソッドを指定する場合、インポート文を使わないと以下のようになります。
int Hensu = aaa.bbb.ccc( i );
しかし、インポート文を使うと以下のように書くことができます。
import aaa.bbb;
public class ddd{
public static void main (String[] args){
int Hensu = bbb.ccc( i );
}
}
上記のインポート文ではaaaパッケージのbbbクラスのみをインポートしていますが、aaaパッケージのすべてのクラスをインポートする場合には、「*」を使って一文で済ませることができます。
inport aaa.*;
関連記事