ベストアンサー
クラスにアクセス修飾子がない場合、デフォルトのアクセス修飾子で処理されます。
デフォルトのアクセス修飾子は、クラス、フィールド、メソッドなどのアクセス修飾子を明示的に宣言しないことを意味します。
アクセス制御修飾子なしで宣言された変数またはメソッドは、誰でも使用できます。同じパッケージ内の他のクラス。インターフェイスのフィールドは暗黙的にpublicstatic finalであり、インターフェイスのメソッドはデフォルトでpublicです。
public-パブリックとして宣言されたクラス、メソッド、コンストラクタ、インターフェイスなどは、他のクラスからアクセスできます。 。したがって、パブリッククラス内で宣言されたフィールド、メソッド、ブロックには、Javaユニバースに属する任意のクラスからアクセスできます。
ただし、アクセスしようとしているパブリッククラスが別のパッケージにある場合は、パブリッククラスはまだインポートする必要があります。クラスの継承により、クラスのすべてのパブリックメソッドと変数はそのサブクラスに継承されます。
例
public static void main(string [] args)
{
//…………………………………
}
アプリケーションのmain()メソッドはパブリックである必要があります。そうしないと、Javaインタープリター(javaなど)がクラスを実行するために呼び出すことができませんでした。
回答
Javaファイルにはクラス定義を含めることはできません。 Javaファイルをコンパイルすると、コンパイラはクラス定義ごとに独立した.classファイルを生成します。
Javaファイルにメインクラスのみがある場合は、パブリックとして定義する必要はありません。
Javaファイルに複数のクラスがある場合、Javaファイルで許可されるパブリッククラスは1つだけであるため、すべてのクラスをパブリックにすることはできません。ここでは、パブリッククラスの名前とJavaファイルの名前が同じである必要があります。
//filename: Main6.java
class Demo2
{
public void Demo2()
{
System.out.println("Hello world");
}
}
class Main6
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
d.Demo2();
}
}
output
Hello world
上記の例では、ファイル名としてメインクラス名を指定したため、メインクラスをパブリックとして宣言していません。まだ機能しています。
//filename: Main6.java
public class Demo2
{
public void Demo2()
{
System.out.println("Hello world");
}
}
class Main6
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
d.Demo2();
}
}
output:
Main6.java:1: error: class Demo2 is public, should be declared in a file named Demo2.java
さて、今回はエラーが発生します。したがって、1つのJavaファイルに複数のクラスがある場合は、メインクラスをパブリックとして定義することをお勧めします。プログラムの実行はmainメソッドから始まることがわかっています。
答えが得られたら幸いです