こんにちは!ペンすけです!
今回は、ちょっと混乱しがちな「ファイル名とクラス名の関係」について説明します!
ペンすけ
基本は、ファイル名とクラス名は一緒だよ!
とりあえず同じ名前を付ければ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に変更します。どちらが良いかはお好みです。
コメント