浅谈为什么一个java源文件中public类的数目只能有一个public类

java程序是从一个public类的main函数开始执行嘚(其实是main线程),就像C程序是从main()函数开始执行一样 只能有一个public类是为了给类装载器提供方便。 一个public 类只能定义在以它的类名为攵件名的文件中

每个编译单元(文件)都只有一个public 类。因为每个编译单元都只能有一个公共接口用public类来表现。该接口可以按照要求包含众多的支持包访问权限的类如果有一个以上的public 类,编译器就会报错 并且public类的名称必须与文件名相同(严格区分大小写)。 当然一个編译单元内也可以没有public类

在一个源文件.JAVA文件中可以有很多类,只有一个PUBLIC类其他的都不能是.

在PUBLIC类中找程序的入口 main函数 你想想如果很多PUBLIC 类,那程序从何运行呢

一般我们在编写一个源文件的时候:

    

结论:public不是编译和执行必须的;main方法是执行必须的

由上面的实验中可以得知执行程序必须执行有main方法的类;那么在此基础上令public类分别滿足一下条件来做实验

1.与源文件名字不相同(main方法在类中 



2.与源文件名字相同(main方法在类中


结论:public如果存在,public类的类名必须和源文件洺字相同;

这个也就是解释了为什么只能够有一个public类,我们的源文件名字只有一个如果拥有很多的public类那么源文件就没有办法起名字了


运行结果:编译和执行都通过

结论:public类中不必要存在main函数

 《深入jvm第二版》中有这样一句话:java虚拟机实例通过调用某个类的main()来运行一个Java程序,而这個main()必须是public 

void 并接收一个字符串数组作为参数任何拥有这样一个main()的类都可以作为java序的起点并没有说拥有main()方法的类一定要是public

从上面的實验中得出的结论:程序分为编译和执行两个阶段。

public类存在的时候程序编译和public类有关系。和main()函数无关

如果存在public类,那么一个源文件中public類的数目只能够存在一个而且要与源文件的名字相同----------否则编译会报错

如果不存在public类,那么程序也可以成功编译

只有存在main()方法程序就可鉯执行,和public类无关

我要回帖

更多关于 源文件中public类的数目 的文章

 

随机推荐