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 .;lang\java\hello;lang\cpp\hello -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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

長野 透

長野 透

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説