解析:1、只有一个public类:浅谈为什么一个java源文件中只能有一个public类?


第一、每个编译单元(文件)只能有一个public 类。这么做的意思是,每个编译单元只能有一个公开的接口,而这个接口就由其public 类来表示。 

第二、java程序的入口是main方法,所以被定为public的这个类里一定是含有main方法的类,而且该类的名称要和文件名一致,因为虚拟机开始要找main的。(同个源文件有多个公共类,编译器就找不到应该执行的main方法了)
第三、你可以根据需要,往这个文件里面添加任意多个提供辅助功能的public 权限的类。但是如果这个编译单元里面有两个或两个以上的public 类的话,编译器就会报错。
第四、在标准的java代码编写时,无论代码量多少,最好一个源文件里只有一个类或接口(接口也要单独写在一个源文件里),因为JAVA是面向对象的语言,每个类都是抽象的结果,所以每个类都要单独写在一个源文件里。
第五、编译单元里面可以没有public 类,指的是没有公开的接口,但是可以在同一个包内访问的;public的意思是在包内包外均可访问。虽然这种情况不常见,但却是可以的。这时,你就能随意为文件起名字了。

2. public 类的名字必须和这个编译单元的文件名完全相同,包括大小写。
第一、如果你不遵守,编译器又要报错了。
首先Java是被解释执行的。它在运行时并不是将所有的class文件全都放到内存中。而是在遇到import的时候才去相应的文件目录找相应的class文件。
第二、对于一个public类,它是可以被项目中任何一个类所引用的,只需在使用它前import一下它所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大。