簡體   English   中英

在Java中訪問沒有頂級類的非頂級類

[英]Accessing non top-level class without a top level class in Java

我有一個Java文件TestThis.java ,如下所示:

class A
{
    public void foo() 
    {
        System.out.println("Executing foo");
    }
}

class B
{
    public void bar()
    {
        System.out.println("Executing bar");
    }
}

上面的代碼文件編譯正常,沒有任何警告/錯誤。 沒有任何其他外部類的頂級類,是否可以通過任何方式訪問A類或B類?

如果不是,那為什么Java甚至允許在沒有頂級類的情況下編譯此類文件?

和往常一樣(例如,從Test.java訪問):

public class Test {
    public static void main(String... args) {
        A a = new A();
        a.foo();
        B b = new B();
        b.bar();
    }
}

這里的規則是,源文件中不能有多個公共類。 如果您有一個文件名,則文件名必須與此公共類名匹配。 否則(根據您的情況),您可以根據需要命名文件。 其他非公共類將對程序包可見,您可以照常訪問它們。

同一包中的任何其他類都可以訪問A和B; 在這種情況下,由於沒有源文件的package語句,因此使用了空包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM