2008-11-28 75 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;在这种情况下,由于没有包语句存在于源文件中,所以正在使用空包。