【Java初心者】パッケージ利用とメリット

この記事では、パッケージの役割と使用するメリット、
完全限定クラス名やimport文について説明していきます。

パッケージとは

パッケージとは、開発が進むにつれて数が増えた
複数のクラスを機能ごとにひとまとまりのグループに分類する機能です。

クラスやメソッドなど、いくつかの機能をひとまとまりにする機能は
いくつもありますが、パッケージはそれらをグループ化する一番大きなくくりです。

パッケージのイメージ

パッケージの記述方法

パッケージは、ソースファイルの一番上にパッケージ文を記述します。
記述方法としては、[package パッケージ名;]という書き方をします。

クラスと違い、パッケージの場合は[{}]波かっこで括ることはしませんので、
パッケージ名の後ろにセミコロンをつけて終了するという点に注意してください!

パッケージ名が[samplePackege]であれば、以下のように記述し、
その下にクラス、メソッドと記述していきます。

package samplePackage;

public class SampleClass {

	public static void main(String[] args) {
		String a = "abc";
		System.out.println(a);
	}
}

別パッケージ内メソッドの呼び出し方

別のパッケージに所属しているクラス内メソッドを呼び出す方法は
主に2つありますので順番に説明していきます。

完全限定クラス名で呼び出す

まず、完全限定クラス名と聞くとかっちりとした難しいイメージを持つかと思いますが、
クラス利用について既に知っている方であればすでに実践していることです!

別クラスにあるメソッドを呼び出すときに
メソッド名の前にクラス名を呼び出すのと同様に、
メソッド名の前にクラス名とパッケージ名をつけるだけです。

完全限定クラス名
  • クラス名:samplePackage
  • クラス名:SampleClass
  • メソッド名:sampleMethod

例えば↑のようなパッケージ、クラス内にあるメソッドを
mainメソッドから呼び出す場合に、
完全限定クラス名を使うと以下のようになります。

       public static void main(String[] args) {
		samplePackage.SampleClass.sampleMethod();
	}

基本的には異なるパッケージに属するクラス、メソッド
呼び出す際に利用されるのが完全限定クラス名ですが、
同じパッケージ内のメソッドを呼び出すときにも、
完全限定クラス名を使用して記述することも可能です。

ですが、同じパッケージ内であれば
パッケージ名をわざわざ書く必要はありませんので
参考程度に覚えておいてください。

クラスの分割について知りたい方は、
【Java初心者】複数のクラス/ソースファイルを利用する方法とメリット
説明していますのでぜひそちらもご覧ください!!

import文を使用

前項で完全限定クラス名について説明しましたが、
正直長くてめんどうくさいと感じた方がほとんどだと思います。

メソッド内で何回も他のパッケージのメソッドを呼ぶことになると
長いコードをいちいち書くことになり、開発効率も落ちてしまうかも知れません。

そこで、他パッケージのメソッドを利用しやすくしてくれるのがimport文です!
import文を利用することで、他メソッド呼び出し文を少し短くすることができます。

使い方としては、import文package文とクラス宣言の間に書いて、
呼び出したいメソッドが存在するパッケージを指定するだけです。

import文の書き方

実際のコードとしては以下のようになり、
import文を書いたクラスのメソッドを利用する際には、
他クラスのメソッドを呼び出すときと同様に
[クラス名.メソッド名();]で呼び出すことができます。

package packageA;

import packageB.ClassB;

public class ClassA {
	public static void main(String[] args) {
		String a = "abc";
                ClassB.methodB();パッケージ名を省略してもpackageB内のメソッドを呼べる
		System.out.println(a);
	}
}

他のパッケージ内のメソッドを利用する際には
import文を使用するのが一般的ですので、
import文を自分でも使って慣れてみてください!

また、import文は複数書くことができるので、
1つのパッケージからではなく多くのパッケージからメソッドを利用することが可能です。

import文でパッケージ名の後ろに[*]をつけることで、
そのパッケージ内の全てのクラスをインポートすることができて
非常に便利なのでそちらも覚えておいてください!

import packageB.classB;
import packageB.classC;           ⇦同一パッケージ内の違うクラス
import packageD.classD;          ⇦違うパッケージ内のクラス
import packageE.*;                   ⇦パッケージ内の全てのクラスをインポート

パッケージ利用のメリット

パッケージ利用のメリットとしてまず挙げられるのが、
数が多くなったクラスを機能ごとにグループ化できるということです。

その他にも大きなメリットがあります。
それは、クラスをパッケージごとに分割することで
クラス名が重複することが許されるという点です。

同一パッケージ内にあるクラス同士では、
同じクラス名をつけることはできませんが、
パッケージを分けることにより完全限定クラス名が変わるため
同じクラス名を使用することができます。

パッケージ利用のメリット

例えばクラスが増えてきて、計算を行うクラス[Calculation]はすでに存在しているが、
また別の計算処理を行うクラスを作りたいという場面に遭遇したとします。

他のわかりづらい名前をつけてしまうと後からわからなくなってしまうので
[Calculation]と命名したいですよね。

そんなときにパッケージを分割することで
[Calculation]クラスを複数作ることができるのです!

パッケージ名の付け方

Javaでは、パッケージ名は自由に好きな名前をつけることができ、
一番最初の文字以外ならばドット[.]を名前に使用することもできます。

パッケージ名を命名する際は、
パッケージ名は絶対に重複しない名前を使用しなくてはいけない
ということに注意してください。

パッケージ名が重複すると完全限定クラス名が被ってしまうメソッドが出てきて、
プログラムが想定通りに動かなくなる可能性があるためです。

一般的に、企業などでの開発を行う際には
企業独自のインターネットドメイン名を使用することが多いようです。

個人で開発を行う際にも、自分独自の
他の人とは絶対に重複しないパッケージ名を使用するように心がけてください!

まとめ

ここまで説明してきた通り、パッケージは、Javaでのプログラミング開発を
進める中で一番大きい括りになります。

そのため、Javaを利用する大規模な開発では必ずパッケージを使用して
データのやり取りをすることが必要になりますので、
パッケージの基本的な使い方を覚えておいてください!

他にもJavaプログラミングについて記事を書いておりますのでぜひご覧ください!