Javaのファイル名とクラス名の関係 ~Java初心者の備忘録~

プログラミング
この記事は約4分で読めます。

こんにちは!ペンすけです!
今回は、ちょっと混乱しがちな「ファイル名とクラス名の関係」について説明します!

ペンすけ
ペンすけ

基本は、ファイル名とクラス名は一緒だよ!

とりあえず同じ名前を付ければOK!

難しいことは考えずにJavaを実行したい場合は、クラス名とファイル名は同じにしちゃいましょう。

ファイル名を Sample.java にしている場合、クラス名もSampleにしておけば安心です。
具体的には次のようになります。

// Sample.java に記述

public class Sample {
// ファイル名と同じクラス名
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        int result = a + b;
        System.out.println(result);
    }
}

複数クラスを同一のファイル内に作りたい場合は、最後までご覧ください!

publicを付けたクラスは1つまで

error: class [YOUR CLASS] is public, should be declared in a file named [YOUR CLASS].java

publicを付けたクラスを複数定義すると、次のようなエラーが出ます。

error: class [YOUR CLASS] is public, should be declared in a file named [YOUR CLASS].java
補記 → [YOUR CLASS]には、自分で定義したクラス名が入ります。
ペンすけ
ペンすけ

日本語訳はこんな感じ!

エラー: クラス [YOUR CLASS] は public ですが、[YOUR CLASS].java という名前のファイルで宣言されるべきです。

解決策:publicを該当するクラスから削除する

publicをmainを実行しているファイル以外から削除すると、エラーが解消されます。

具体例(Sample.java)
public class Sample {
// mainを実行しているクラスなのでpublicを残す
    public static void main(String[] args) {
        MyClass myClass1 = new MyClass(10);
        MyClass myClass2 = new MyClass(20);

        int result = myClass1.getNum() + myClass2.getNum();
        System.out.println(result);
    }
}

public class MyClass {
// このpublicが不要
// Sample.java:12: error: class MyClass is public, should be declared in a file named MyClass.java
// public class MyClass {
//        ^
// 1 error

    private int num;

    public MyClass(int num) {
        this.num = num;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

}

publicを付けたクラス名とファイル名は同じにする

ペンすけ
ペンすけ

publicはmainを実行しているクラスだけに付けているのにエラーが出る!

エラーが出ているファイル(Sample.java)
public class Main {
// Sample.java:1: error: class Main is public, should be declared in a file named Main.java
// public class Main {
//        ^
// 1 error
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        int result = a + b;
        System.out.println(result);
    }
}

解決策:publicを付けたクラス名とファイル名を一致させる

今回はファイル名が Sample.java なので、1行目の

public class Main {

のところを、

public class Sample {

に変更します。
もしくは、ファイル名をMain.javaに変更します。どちらが良いかはお好みです。

コメント

タイトルとURLをコピーしました