gpt4 book ai didi

没有公共(public)类的 .java 文件的 Java 编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:29 25 4
gpt4 key购买 nike

好的,所以一个 java 源文件必须至少有一个公共(public)类并且该文件应该被称为“class-name.java”。很公平。

因此,如果我有一个类,那么将编译以下内容:

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}

但让我感到困扰的是,如果我从上面的代码中删除“public”访问修饰符,代码仍然可以编译。我只是不明白。删除它,代码如下所示:

class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}

在上面的代码中,由于我删除了 public 访问修饰符,我的类具有 defaultpackage 访问权限,即它不能可以从外部世界访问,只能从包内访问。

所以我的问题是,上面的代码是如何编译的?在这种情况下,文件 HelloWorld.java 没有 public HelloWorld 类(只有包私有(private)的 HelloWorld.class),因此据我所知不应编译。

最佳答案

a java source file must have at least one public class and the file should be called class-name.java

不正确,顶级类不必声明为公开的。 JLS 声明;

If a top level class or interface type is not declared public, then it may be accessed only from within the package in which it is declared.

参见 http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#104285第 6.6.1 节。

关于没有公共(public)类的 .java 文件的 Java 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7633631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com