パッケージの基礎 package フォルダ分け - 萌えJava超入門
第十四章 クラスとパッケージ

パッケージの基礎

パッケージとは数多くのクラスをフォルダに分けて管理する仕組みです。
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

重要
  1. パッケージを含めると、クラス名は「パッケージ名.クラス名」になります。
  2. パッケージフォルダはクラスの構成要素になるので、
    javaコマンドの実行は、パッケージフォルダより上位のフォルダから行います。


確かにうまくいきましたが、
これって何が便利なんすか?
だよねぇ。
基本ができたところで
次のページに行ってみよう。


お疲れ様でした。


© 2019 awasekagami