第十四章 クラスとパッケージ
パッケージの基礎
パッケージとは数多くのクラスをフォルダに分けて管理する仕組みです。
javac java コマンド の書き方も少し注意が必要です。
project> javac pack_01/Parent.java
project> java pack_01.Parent
目次
1.クラスをフォルダに配置する
クラスが増えてくるとファイルの管理が大変ですね。
ソースファイルや、クラスファイルをパッケージ で管理しましょう。
クラスをグループごとにフォルダに分けます。
このフォルダの名前がパッケージ名になります。
ソースファイルでも、「所属するパッケージ」をクラスの先頭で宣言します。
クラスを作る方法を覚えたので、
それらを便利に管理する方法を
紹介したい。
ふんふん。
簡単な例から試してみましょう。
以下のように、pack_01フォルダの中にソースファイルを配置します。
pack_01 がそのままパッケージになります。
配置例
project
|---pack_01
|---Parent.java <-- パッケージ「pack_01」に所属
|---Child_A.java <-- パッケージ「pack_01」に所属
|---Child_B.java <-- パッケージ「pack_01」に所属
パッケージ名
ファイル名 = クラス名.java としたように、
パッケージ名 = 所属するフォルダ名 でなければいけません。
パッケージ名の区切り文字は、「/」ではなく、 「.」(ドット)になります。
クラスの中でもパッケージを宣言します。
宣言の書式
package パッケージ名;
(クラスの先頭で宣言します。)
「;」(セミコロン)を忘れないでください。
こんな感じになる。
packageの宣言例
package pack_01;
class Parent{
//処理
}
「class」よりも上に
宣言するのね?
2.サンプルコードの準備と配置
前回と同様に
Parentクラスから
Child_Aクラスと、Child_Bクラスの
メンバを呼び出す。
違うのはパッケージになっている点だ。
package pack_01;
が追加されてるわね。
//Parent.java
package pack_01;
class Parent{
public static void main(String[] args){
Child_A.say();
Child_B.say();
}
}
//Child_A.java
package pack_01;
class Child_A{
static void say(){
System.out.println("pack_01.Child_A");
}
}
//Child_B.java
package pack_01;
class Child_B{
static void say(){
System.out.println("pack_01.Child_B");
}
}
配置
project
|---pack_01
|---Parent.java
|---Child_A.java
|---Child_B.java
こっちでは
pack_01フォルダに
ソースファイルが配置されてるっス。
パッケージを宣言して、
パッケージフォルダへ
配置しただけだ。
3.サンプルプログラムのコンパイル
早速コンパイルしよう。
パッケージフォルダの上位フォルダである projectフォルダから作業をします。
javacコマンドの引数は pack_01/Parent.java だけです。
パッケージ通りに配置されていれば、すべてのソースファイルがコンパイルされます。
「pack_01/Parent.java」が、projectフォルダからのパスであることに注意してください。
重要
javacコマンドの引数であるソースファイルは、
パッケージに関係なく、カレントディレクトリからの相対パス、
又は絶対パスになります。
コマンドライン
>cd ws/project
ws/project>javac pack_01/Parent.java
配置
project
|---pack_01
|---Parent.class
|---Parent.java
|---Child_A.class
|---Child_A.java
|---Child_B.class
|---Child_B.java
クラスファイルができてる!!
うまくいったかな?
4.サンプルプログラムの実行
Parentクラスの名前が、パッケージを含めたことにより、「pack_01.Parent」になっています。
pack_01フォルダを含めて「pack_01.Parent」なのです。
そして、「pack_01.Parent」は、projectフォルダにあると解釈されます。
したがって、実行コマンドは以下のようになります。
コマンドライン
ws/project>java pack_01.Parent
pack_01.Child_A
pack_01.Child_B
重要
- パッケージを含めると、クラス名は「パッケージ名.クラス名」になります。
- パッケージフォルダはクラスの構成要素になるので、
javaコマンドの実行は、パッケージフォルダより上位のフォルダから行います。
確かにうまくいきましたが、
これって何が便利なんすか?
だよねぇ。
基本ができたところで
次のページに行ってみよう。
お疲れ様でした。