当具有访问修饰符public的类与具有文件名和类名的java文件不同时,会发生什么情况

当具有访问修饰符public的类与具有文件名和类名的java文件不同时,会发生什么情况,java,filenames,main,Java,Filenames,Main,我刚刚用文件名b.java编写了一个这样的代码 public class a{ public static void main(String args[]){ System.out.println("Hii"); } } 它给出了这样的错误 error: class a is public, should be declared in a file named a.java 如果我在类前面移除访问修饰符public 它运转良好。 我不想更改类名或文件名,除非有

我刚刚用文件名b.java编写了一个这样的代码

public class a{
    public static void main(String args[]){
        System.out.println("Hii");
    }
}
它给出了这样的错误

error: class a is public, should be declared in a file named a.java
如果我在类前面移除访问修饰符public 它运转良好。 我不想更改类名或文件名,除非有很大的原因


如果是,请解释原因。为什么我们应该给出文件名和同名的类名。

如果将类定义为public,则类名应该与文件名匹配

我们将任何类定义为public的原因是使它可以从其他类或其他包中的代码访问

根据文件的类名命名文件名的规则,编译器可以很容易地找到类


同样在JAVA中,一个文件中只能有一个公共类。

对于开发人员来说,这种约定更像是一种最不令人惊讶的原则,而不是编译器,因为您可以在不同名称的文件中定义非公共类。