缺省包(default package)

来源:互联网 发布:淘宝上ke t 编辑:程序博客网 时间:2024/06/05 03:13

你会惊异地发现下面的程序代码虽然看起来是破坏了上述规则,但它仍可以进行编译。

 

//:c05:Cake.java

// Accesses aclass in a separate compilation unit.

importcom.bruceeckel.simpletest.*;

 

class Cake {

static Test monitor = new Test();

public staticvoid main(String[]args) {

        Pie x = new Pie();

    x.f();

        monitor.expect(new String[] {

"Pie.f()"

        });

    }

///:~

 

在第二个处于相同目录的文件中:

 

//:c05:Pie.java

// The otherclass.

class Pie {

void f() {System.out.println("Pie.f()"); }

///:~

 

最初你或许会认为这两个文件毫不相关,但 Cake 却可以创建一个 Pie 对象并调用它的f( )

方法!(记住,为了使文件可以被编译,在你的 CLASSPATH 之中一定要有‘.’。)你通常

会认为 Pief( )享有包访问权限,因而是不可以为 Cake 所用的。它们的确享有包访问

权限,但这只是部分正确的。Cake.java 可以访问它们的原因是因为它们同处于一个相同

的目录并且没有给自己设定任何包名称。Java 将这样的文件自动看作是隶属于该目录的缺

省包之中,于是它们为该目录中所有其他的文件都提供了包访问权限。


原创粉丝点击