2008-11-28 71 views
0

我有一個Java文件TestThis.java這樣的:訪問非頂層類沒有頂層類在Java中

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

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

上面的代碼文件沒有任何警告/錯誤,正在編制的罰款。有什麼方法可以訪問任何類別AB沒有任何其他外部類的頂級類?

如果沒有,那麼爲什麼Java甚至允許編譯沒有頂級類的文件呢?

回答

5

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

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

這裏的規則是,你不能在源文件中的多個公共類。如果你有一個,文件名必須與這個公共類名稱匹配。否則(你的情況),你可以根據你的意願命名你的文件。其他非公開課程將顯示爲包視圖,您可以照常訪問它們。

1

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