我们在编写Java程序的时候,例如HelloWorld,我们可以发现HelloWorld类在定义的时候使用了关键字 public,那么一个类声明的时候可以不使用public吗?我们一起来看看它们有什么区别?
我们先来进行一个测试,看看Java源文件中是否可以定义多个class,请看下图:
我们可以看到创建了一个 Test.java 源文件,在该文件中定义了四个类,分别是A类、B类、C类和D类,使用 javac 命令编译之后生成了四个对应的字节码文件,分别是A.class、B.class、C.class和D.class。
通过以上的测试可以得出几个结论:
1.一个Java源文件中可以定义多个class。
2.编译的时候一个class会对应生成一个class字节码文件。
3.public 的 class 可以没有。
接下来,我们在Test.java源代码中继续定义一个“公开的类E”,请看下图:
我们可以看到,定义公开的类E之后,再次编译,编译器报错了,并且提示的错误 信息是:类E是公开的,应在名为E.java的文件中声明。换句话说,在Test.java 文件中定义的公共的类的名字必须是 Test,不能是其它名称。
这里我们又可以得出几个结论:
1.如果定义 public class 的类,要求此类名必须和 Java 源文件名保持一致。
2.也间接说明在同一个 java 文件中公共的类只能有一个(注意:在同一个 java 文件中类名不能重名)。
接下来,我们再对以上程序将进行修改,我们在每一个类的类体当中都定义main方法,都写上程序的入口,看看是否可以编译和运行:
我们可以看到,在每一个 class 中都可以编写 main 方法,想让程序从哪个入口进去执行则加载该类即可。
通过以上的测试可以得出:任何一个 class 中都可以设定程序入口,也就是说任何一个 class中都可以写 main 方法(主方法),想从哪个入口进去执行,则让类加载器先加载对应的类即可。但实际上,对于一个完整的独立的应用来说,只需要提供一个入口,也就是说只需要定义一个 main 方法即可。以上只是一个测试,在实际的开发中,虽然一个 java 源文件可以定义多个 class,实际上这是不规范的, 比较规范的写法是一个 java 源文件中只定义一个 class。