Java中未声明的类是公开的吗?

cke*_*sch 5 java

我开始学习java并在Eclipse中创建了我的第一个hello world函数.我注意到以下两个函数,都在我的java项目的src文件夹的默认包中,似乎做了同样的事情:

class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

public class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

两者都成功打印'Hello World!' 到控制台.

我已经阅读了一些关于不同类类型的内容,但我不确定我将使用第一个函数声明什么类型的类.这两个功能有什么区别?java在第一种情况下公开我的hello world class吗?

Mat*_*yas 10

Class未宣布自己作为publicIS package protected,这意味着class它仅在该包访问.

stackoverflow上的acccess修饰符非常有用的摘要.更多在oracle

例:

所以假设您有以下包结构:

com
  stackoverflow
    pkg1
      public Class1
      Class2
    pkg2
      OtherClass
Run Code Online (Sandbox Code Playgroud)

Class2只能用于Class1,但不能用OtherClass