将包含main方法设置的java类与public相关的重要性

0 java

当我开始学习Java时,我也开始使用ubiqutous Hello world应用程序.哪个或多或少像:

public class MyClass {

 public static void main(String args[]){

    //some code here....

 }

}
Run Code Online (Sandbox Code Playgroud)

自从我与Java约会以来已经很多年了但是最近我遇到了一个有问题的初学者:即使她能够正确编译,她的类文件也不会运行.

在查看她的代码后,我注意到的第一件事就是没有使用main方法的类上的公共访问说明符.我立刻嘲笑她,并通过添加公共访问修饰符来"修复"它.这个笑话在我身边,因为这也没有任何区别.然后我意识到她试图从类文件所在的目录中执行编译的类.我改为那个目录并发出了java命令并立即运行.

这让我想到了我的问题......大多数hello world示例都具有公共访问权限的类设置,当它完全没有时就可以了.那么,如果一个包含main方法的类有什么不同呢?

为了让我们更清楚地知道我们在这里做了什么,步骤如下:

我们上过课

c:\users\[usersname]\[my documents folder]\myprog.class
Run Code Online (Sandbox Code Playgroud)

我们试图从c:\运行它(作为我们的工作目录).我们确实指定了期望它起作用的完整相对路径.像这样:

java users\[usersname]\[my documents folder]\myprog
Run Code Online (Sandbox Code Playgroud)

当然这只是失败了,直到我改成文件夹,使其成为当前工作目录并再次发出命令

java myprog
Run Code Online (Sandbox Code Playgroud)

因此,当您将类放在类似于其名称前面的文件夹结构的包中时,基本上这样的调用是有意义的.在这种情况下,该类不在任何包中.

Uri*_*Uri 5

"public"与"package"说明符与其他包中的类是否允许"看到"该类有关.

大多数hello world程序会忽略包,因此它们会使用更常见的公共选项.大多数人在实际学习将项目组织到包中之前,从不必了解其他包说明符(及其局限性).当然,如果你只有一个班级,那也没关系.

另外,我不确定你为什么要嘲笑新手程序员.我已经用Java编写了10年的代码,并且一直在学习新的东西.