今回はJavaプログラムにおけるパッケージ宣言とインポートの使い方を学びましょう。
問題
次のプログラムをコンパイルして実行した場合、結果はどれになりますか?正しい答えを選んでください。
package myapp.utility;
import myapp.utility.helper.Helper;
class Main {
public static void main(String[] args) {
Helper.printMessage();
}
}
package myapp.utility.helper;
public class Helper {
public static void printMessage() {
System.out.println("Hello from Helper");
}
}
選択肢
- A. Hello from Helper
- B. コンパイルエラー
- C. 実行時エラー
- D. パッケージエラー
答えと解説
回答を見る
答え
B. コンパイルエラー
解説
基本説明:
Javaでは、コードを再利用しやすくし、命名衝突を避けるためにパッケージを使用します。パッケージはディレクトリに似ており、関連するクラスをグループ化します。
プログラムをパッケージに属するようにするためには、ソースファイルの最上部にpackage
宣言が必要です。
また、他のパッケージに属するクラスを使用する場合はimport
文を用います。
誤答理由:
このプログラムは2つのパッケージ宣言が同一ファイル内にあり、それぞれ異なるパッケージを宣言しています。これはJavaのルールでは認められていません。
一つのJavaファイルは、単一のパッケージ宣言しか持てないのが原則です。したがって、このコードをコンパイルするとエラーになります。
つまずきポイント:
Javaプログラムを書いているとき、パッケージの階層とインポートステートメントの正確さが重要になります。多くの初心者は複数のパッケージ宣言で混乱しがちです。
また、同じファイルに複数のクラスを定義することがありますが、それぞれのクラスのパッケージが同じであることを確認する必要があります。
発展知識:
パッケージを使う利点は、例えば組織内での命名規則を簡単に作れることです。通常、逆ドメイン名を最初に使うことで衝突を避けます(例: com.example.myapp
)。
なお、JDKが提供するライブラリもパッケージ化されています。同様に、クラス間の関係や依存関係を保つため、正しくパッケージを設定することが重要です。