パッケージとは
Java Platformはクラスの集合体です。様々な種類のクラスで構築されていますが、その数はとても多いため、扱いやすくするためにグループ化されています。その単位をパッケージと呼びます。パッケージという概念があるので、必要とするクラスが探しやすくなります。また、同じ名前のクラスがあっても必要なものを特定できるようになっています。この仕組みは例えると、Windows系の場合はフォルダーとファイルの関係に、Unix系の場合はディレクトリーとファイルの関係と言えます。
また、独自のクラスを作るときは、同じ名前のクラス名を付けないようにするために名前を考える必要がありますが、パッケージを分けることにより同じ名前を付けて扱うことが可能になっています。今まで作成していたクラスはパッケージの指定はしませんでしたが、所属するパッケージ名の指定を省略した場合は「デフォルト」パッケージに所属するものとして扱われています。
パッケージを指定してクラスを作るにはプログラムの最初に次のように指定します。
パッケージ指定の書式 |
---|
package パッケージ名; |
○ ファイル
次のようにファイルを作成してください。
ファイル名 | PackTest.java |
---|
○ プログラム
次のようにパッケージ名を指定したクラスを作成してください。
PackTest.java
- package pack;
- public class PackTest{
- public String message(){
- return "違うパッケージのクラスからのメッセージ";
- }
- }
○ コンパイル
C:¥work>javac -d . PackTest.java
C:¥work>
○ 解説
1行目では、パッケージ名を指定しています。今回はpackパッケージを指定しています。コンパイル時に「-d」オプションをつけて、展開するディレクトリーと、コンパイルするファイルを指定します。すると、指定したディレクトリーにパッケージ名の名前が付いたフォルダーが作成され、その中にクラスファイルが作成されます。
今回は、展開するディレクトリーを「.」、つまりカレントディレクトリーとしているので、「C:\work」にpackディレクトリーが作成され、その中にPackTest.classファイルが作成されます。
次に、PackTestクラスを実行するクラスを作成しましょう。
○ ファイル
次のようにファイルを作成してください。
ファイル名 | PackTestTest.java |
---|
○ プログラム
今までと同じようにデフォルトパッケージに所属する実行クラスを作成してください。
PackTestTest.java
- public class PackTestTest{
- public static void main(String[] args){
- //PackTestオブジェクトを生成
- pack.PackTest obj = new pack.PackTest();
- //メッセージを表示する
- System.out.println(obj.message());
- }
- }
○ コンパイルと実行
C:¥work>javac PackTestTest.java
C:¥work>java PackTestTest
違うパッケージのクラスからのメッセージ
C:¥work>
○ 解説
4行目では、PackTestクラスのインスタンス生成をしています。このクラスはパッケージが違うために、「パッケージ名.クラス名」のように指定する必要があります。