Java パッケージ概要

2008/10/03 23:58Update
TAGS: Java | パッケージ

サンプルからJavaパッケージの定義方法、利用方法、役割、及びパッケージの設計原則について学びます。

サンプルから見てみます。

IHelloWorld.java
package com.hello;    //パッケージ定義

/**
* HelloWorld interface
*/
public interface IHelloWorld {
    /**
     * Print Hello World.
     */
    public void printHello();
}


HelloWorld.java
package com.hello;    //パッケージ定義

/**
* HelloWorld class
*/
public class HelloWorld implements IHelloWorld {
    /**
     * @param args Arguments
     */
    public static void main(String []args) {
        IHelloWorld helloWorld = new HelloWorld();
        helloWorld.printHello();
    }

    /**
     * @see com.test.IHelloWorld#printHello()
     */
    public void printHello() {
        System.out.println("Hello world!");        
    }
}


上のサンプルで示したように、IHelloWorldインタフェースやHelloWorldクラス定義の中に、packageというキーワードが使われています。
package com.hello;


Java言語では、「package + 名前空間」 形式の「Javaパッケージ」と呼ばれるもので Javaクラスやインタフェースをまとめる役割を果たすことができます。

通常、類似した機能を提供する、関連性のあるクラスやインタフェース同士などをまとめて一つのパッケージにすることが多いとされます。

パッケージの定義


package パッケージ名;


パッケージ名は機能に合わせて適切な名前を付けることが望ましい。また、広く配布する予定がある場合、ユニックな名前空間を設けたほうがよいと思われます。

そのため、「com」+「.」+「会社名を表すもの」+「.」+「プロジェクト名」+「.」+「機能名」 のような命名規則が多く見られます。

「.」はパッケージの階層を表しています。つまり、Javaパッケージは、階層構造になっています。

例えば:
com.yourcompany.yourproject.somefunction
jp.co.yourcompany.yourproject.somefunction
com.sun.java
org.apache.myfaces


パッケージとファイルシステムのフォルダ階層



Javaパッケージ階層とフォルダ階層を合わせる必要があります。

例えば、

パッケージ名は com.hello で com.hello.HelloWorld クラスの場合、
HelloWorld.classファイルを配置する場合は、以下のようなフォルダ階層にしなければなりません。

com\hello\HelloWorld.class

配置先の場所にどこでもかまいません。
c:\test\に配置する場合、
c:\test\com\hello\HelloWorld.class

Javaパッケージの利用方法


パッケージにあるクラスやインタフェースなどが外部クラスに利用される場合、import文でパッケージからインポートする必要があります。

■方法1
パッケージ中にあるすべてのクラスやインタフェースなどをインポートする場合、次のような構文で行います。
import com.hello.*;


■方法2
パッケージ中にある特定なクラスやインタフェースなどをインポートする場合、次のような構文で行います。
import com.hello.HelloWorld;


Javaパッケージの役割


◇ クラス名の衝突を避ける。それぞれのパッケージに同名クラスがあっても衝突しません。
◇ 機能のカプセル化。類似した機能を同じパッケージに集めることで、機能がカプセル化されます。
◇ カプセル化による情報隠蔽。privateキーワードで修飾されたクラスは外部からのアクセスが禁止されているため、情報隠蔽を実現できます。
◇ クラスの階層化管理。

参考資料


パッケージ設計の原則

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation