Javaでパッケージを宣言して使用する方法を一からわかりやすく解説!

Javaでパッケージ(package)を使うにはどうすればいいの?
パッケージの宣言の方法がいまいちわからない…
パッケージ名を取得するにはどうすればいいの?

こんにちは!フリーランスの長野です。Javaはソースコードを書くだけでは実行することはできません。

環境変数を設定したり、コンパイルする必要があります。また、1つのプログラムで複数のクラスが別々のフォルダに作成されている場合、パッケージ(package)を宣言する必要があります。

この記事では、そんなJavaのパッケージについて、以下の内容で解説していきます。

  • そもそもパッケージとは
  • パッケージの命名規則や宣言・実行方法
  • パッケージ名を取得する方法

今回はJavaのパッケージについて、わかりやすく解説します!

Javaにおけるパッケージ(package)とは

パッケージ(package)はクラスやインターフェースをグループ化して分ける仕組みです。

Javaでプログラミングをするとたくさんのクラスを作ることはよくあります。たくさんのクラスを作ると同じクラス名を付けることはできません。

しかし、グループ化して分けてさえいれば、同じクラス名を付けていても問題は発生しなくなります。また、同じ機能や関連するクラスをグループ化して分けていることで、クラスも検索し易くなり修正や改良する際に探す手間も省くことができます。

パッケージの命名規則とは

クラスやインターフェースはフォルダでグループ分けします。

例えば、

フォルダの階層が第1階層から第3階層まであり、第3階層でクラスを定義する

この場合、パッケージ名は

第1階層フォルダ名.第2階層フォルダ名.第3階層フォルダ名

というように「.」(ピリオド)を使って第1階層から順にフォルダ名を連結してパッケージ名を付けます。また、フォルダ名は小文字が推奨されています。

パッケージを宣言する方法

それではサンプルコードでパッケージの宣言についてみていきましょう。

lang/java/hello/HelloJava.java:

package lang.java.hello;

public class HelloJava {
    public HelloJava() {
        System.out.println("Hello Java!");
    }
}

lang/cpp/hello/HelloCpp.java:

package lang.cpp.hello;

public class HelloCpp {
    public HelloCpp() {
        System.out.println("Hello C++!");
    }
}

パッケージの宣言のポイントは以下のようになります。

  • packageはJavaファイルの先頭に記述します。
  • 最上位階層のフォルダ名から順に「.」(ピリオド)を使って連結します。
  • パッケージ名の後には「;」(セミコロン)を記述します。

パッケージをimportする方法

それでは、先ほどのクラスのサンプルコードをmainメソッド内で使用します。

import lang.cpp.hello.HelloCpp;
import lang.java.hello.HelloJava;

public class Main {

    public static void main(String[] args) {
        HelloJava hello1 = new HelloJava();
        HelloCpp hello2 = new HelloCpp();
    }

}

packageで宣言したクラスを使うにはimportを用いて、最上位階層のフォルダ名から順に「.」(ピリオド)を使って連結し最後に使用するクラス名を記述します。

importの宣言の後には「;」(セミコロン)を記述します。

コンパイル、実行する方法

コンパイル、実行するにはjavac、javaコマンドを使用します。

mainメソッドを含むクラスでimportしている場合はクラスパスを設定する必要はありません。ただし、この場合はソースコードと同じフォルダにclassファイルが生成されます。

ソースコードとclassファイルが混在してゴチャゴチャしてしまいます。ソースコードとclassファイルを混在させずに、分けたい場合はjavacコマンドで-dオプションを使います。

例えば下記のとおりです。

javac -classpath .;langjavahello;langcpphello -d ..bin Main.java

こうすることで、binフォルダ以下はsrcフォルダ以下の構成と全く同じ構成でclassファイルだけが生成されるようになります。クラスパスの設定については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】classpathを指定して実行する方法(確認の方法も解説)
更新日 : 2019年4月8日

パッケージ名を取得する方法

Javaのプログラムでパッケージ名を取得する方法についてご紹介します。

lang/java/pkgname/GetMyPkgJava.java:

package lang.java.pkgname;

public class GetMyPkgJava {
    public GetMyPkgJava() {
        System.out.println(GetMyPkgJava.class.getPackageName());
    }
}

lang/cpp/pkgname/GetMyPkgCpp.java

package lang.cpp.pkgname;

public class GetMyPkgCpp {
    public GetMyPkgCpp() {
        System.out.println(GetMyPkgCpp.class.getPackageName());
    }
}

Main.java:

import lang.cpp.pkgname.GetMyPkgCpp;
import lang.java.pkgname.GetMyPkgJava;

public class Main {

    public static void main(String[] args) {
        GetMyPkgJava pName1 = new GetMyPkgJava();
        GetMyPkgCpp pName2 = new GetMyPkgCpp();
    }

}

実行結果:

lang.java.pkgname
lang.cpp.pkgname

まとめ

今回はJavaのパッケージについて解説してきましたが、いかがでしたか?Javaではプログラミングをする際にたくさんのクラスを作成します。

たくさんのクラスはフォルダごとに整理されていると、後々の修正や改良する際に探す手間が省けます。クラスをフォルダごとに分けて保存すると、packageを宣言することでimportして利用することができます。

使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]