【Java】クラス名とファイル名のルール

Javaのプログラムには、クラス名を必ず作成する必要があります。

そのプログラムをファイル名を付けて保存、コンパイルします。

プログラムをコンパイル

コンパイルする際、以下のようなエラーをみたことはあるでしょうか。

class クラス名 is public, should be declared in a file named クラス名.java

実は、Javaのクラス名とファイル名には、名前のルールがあります。

publicでクラス名を定義する際、クラス名とファイル名を同じ(大文字や小文字も)にする必要があります。

ただのクラス名で定義する際、クラス名とファイル名は異なって問題ありません。

上記のエラーは、publicでクラスを定義したにもかかわらず、クラス名とファイル名が異なっていた場合に発生するエラーでした。

publicのクラスとただのクラスの違い

publicのクラスとただのクラスともに同じパッケージから呼び出すことができます。

しかし、

publicのクラスは、別のパッケージから呼び出すことができます。

ただのクラスは、別のパッケージから呼び出すことができません。

パッケージとは

大量なクラスを分類、管理できるようにグループ分けしたものをパッケージと呼びます。

例として、ランダムな整数を実行したい場合、先人が作ったパッケージから簡単に呼び出すことができます。

FQCNで呼び出し

int randomNumber = new java.util.Random().nextInt();

import文で呼び出し

import java.util.Random;
Random rand = new Random();
int randomNumber = rand.nextInt();

Javaで、この先人が作ったパッケージやクラスのことをJava APIと呼びます。

Javaを学習している際は、パッケージは意識しない場合が多い(使い捨てのプログラム)ので、どちらで定義しても実行結果が変わることは、ほとんどないでしょう。

まとめ

  • publicでクラス名を定義する際、クラス名とファイル名を同じ(大文字や小文字も)にする必要があります。
  • ただのクラス名で定義する際、クラス名とファイル名は異なって問題ありません。