複数のパッケージ package import public - 萌えJava超入門
第十四章 クラスとパッケージ

複数のパッケージ

パッケージとは数多くのクラスを分類して管理する仕組みです。
アクセス制御の役割も担っています。


package pack_01;
import pack_02.KlassB;
class Main{
    public static void main(String[] args){
        KlassB.say();
    }
}

package pack_02;
public class KlassB{
    public static void say(){
        System.out.println("pack_02.KlassB");
    }
}

目次

1.クラスをフォルダ分けする


クラスが増えてくるとファイルの管理が大変ですね。
ソースファイルや、クラスファイルをパッケージ で管理しましょう。

今度は、クラスの数を増やして、複数のフォルダに配置します。
こうすると、フォルダごとにそれぞれのパッケージに所属することになります。

少しレベルを上げて、
複数のパッケージを
使ってみよう。
分かりました!!


2.サンプルコードの準備と配置


次の例では、pack_01、pack_02、pack_03、それぞれがパッケージになります。
Mainクラスから、他のパッケージにあるクラスのメンバを使います。

ソースファイルの配置例
    project
      |---pack_01
      |     |---Main.java     <-- パッケージ「pack_01」に所属
      |
      |---pack_02
      |     |---KlassA.java  <-- パッケージ「pack_02」に所属
      |     |---KlassB.java  <-- パッケージ「pack_02」に所属
      |
      |---pack_03
            |---KlassC.java  <-- パッケージ「pack_03」に所属
            |---KlassE.java  <-- パッケージ「pack_03」に所属


importってなんすか!
//Main.java
package pack_01;

import pack_02.KlassA;
import pack_02.KlassB;
import pack_03.KlassC;
import pack_03.KlassD;

class Main{
    public static void main(String[] args){
        KlassA.say();
        KlassB.say();
        KlassC.say();
        KlassD.say();
    }
}

import
クラス自身が所属するパッケージの外にあるクラスを利用するためには、
classの前に import(インポート)しておく必要があります。

importの書式
import パッケージ名.クラス名;

import しないと
パッケージの外のクラスは
利用できない。


publicってなんなの?!
//KlassA.java
package pack_02;

public class KlassA{
    public static void say(){
        System.out.println("pack_02.KlassA");
    }
}

public
クラス自身が所属するパッケージの外からの importを許可する場合には、
classに public(パブリック)拡張子を付与します。

さらに、import先で使用を許可するメンバに対しても、
public拡張子を付与します。

importpublic
セットだと考えてくれ。
publicでないクラスは importできない。
//KlassB.java
package pack_02;

public class KlassB{
    public static void say(){
        System.out.println("pack_02.KlassB");
    }
}

//KlassC.java
package pack_03;

public class KlassC{
    public static void say(){
        System.out.println("pack_03.KlassC");
    }
}

//KlassD.java
package pack_03;

public class KlassD{
    public static void say(){
        System.out.println("pack_03.KlassD");
    }
}

ソースファイルの配置は
大丈夫かな?


3.サンプルプログラムのコンパイル


早速コンパイルしよう。
コンパイルは前回とまるっきり同じだ。





前回と同じようにコンパイルします。

コマンドライン
>cd ws/project
ws/project>javac pack_01/Main.java

コンパイル後の配置
    project
      |---pack_01
      |     |---Main.class
      |     |---Main.java
      |
      |---pack_02
      |     |---KlassA.class
      |     |---KlassA.java
      |     |---KlassB.class
      |     |---KlassB.java
      |
      |---pack_03
            |---KlassC.class
            |---KlassC.java
            |---KlassD.class
            |---KlassD.java



フォルダごとに
クラスファイルが
できてる!!
なるほど!
これは便利!!
これなら管理しやすいだろ?


5.サンプルプログラムの実行


実行も前回とまるっきり同じだ。



コマンドライン
ws/project>java pack_01.Main
pack_02.KlassA
pack_02.KlassB
pack_03.KlassC
pack_03.KlassD




お疲れ様でした。



© 2019 awasekagami