【Java小疑问】java源文件当中可以有多个类,但是为什么只能有一个public类呢?

  在 Java 中,同一个类文件,仅可存在于一个 public 修饰类,且该 .java 文件要与public 修饰类同名,否则将会报错。原因如下:


1、只有一个public类


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

第二、java程序的入口是main方法,所以被定为public的这个类里一定是含有main方法的类,而且该类的名称要和文件名一致,因为虚拟机开始要找main的。

第三、你可以根据需要,往这个文件里面添加任意多个提供辅助功能的public 权限的类。但是如果这个编译单元里面有两个或两个以上的public 类的话,编译器就会报错。

第四、在标准的java代码编写时,无论代码量多少,最好一个源文件里只有一个类或接口(接口也要单独写在一个源文件里),因为JAVA是面向对象的语言,每个类都是抽象的结果,所以每个类都要单独写在一个源文件里。

第五、编译单元里面可以没有public 类,指的是没有公开的接口,但是可以在同一个包内访问的;public的意思是在包内包外均可访问。虽然这种情况不常见,但却是可以的。这时,你就能随意为文件起名字了。



2、public 类的名字必须和这个编译单元的文件名完全相同,包括大小写。

第一、如果你不遵守,编译器又要报错了。

首先Java是被解释执行的。它在运行时并不是将所有的class文件全都放到内存中。而是在遇到import的时候才去相应的文件目录找相应的class文件。

第二、对于一个public类,它是可以被项目中任何一个类所引用的,只需在使用它前import一下它所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大。


3、public类里是不是一定要有main函数

1:不一定要有main,一个项目中可只有一个main
2:控制台应用中,必须要有main方法,该方法将作为程序运行的入口.

3:web应用中可以不要main,因为IE默认有main方法.


4、Java中可以有多个main函数吗?

   每一个java文件都会有一个public static void main(String[] args)作为程序作为入口,一个类有且只有一个,但是可以有与他不同的,比如:void main(),void main(int a),都是可以的。
   在不同类中,是可以有多个public static void main(String[] args),但是程序不会以另一个作为程序入口,区别就在于class前的public,第二个class是不允许用public修饰的。

猜你喜欢

转载自blog.csdn.net/love_aym/article/details/80578149