在"Think in Java"中,作者说:
你只需将"public"关键字留在课堂上,在这种情况下它具有包访问权限.(该类只能在该包中使用.)
为了证明这一点,我创建了一个公共类和一个非公共类:
package com.ciaoshen.thinkinjava.chapter7;
import java.util.*;
//My public class
public class PublicClass {
//default constructor
public PublicClass(){
System.out.println("Hello, I am PublicClass.");
}
}
//Non public class
//It should be package reachable
class PackageReachableClass {
//default constructor
PackageReachableClass(){
System.out.println("Hi, I am PackageReachableClass.");
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我从同一个包中的另一个类调用它们时:
public class InPackageClass {
/**
* MAIN
* @param args void
*/
public static void main(String[] args){
//pubic class can be reached from anywhere
PublicClass newPublicClass=new PublicClass();
//non-public-class should be accessable in the same package
PackageReachableClass newPackageReachableClass =new PackageReachableClass();
}
}
Run Code Online (Sandbox Code Playgroud)
系统警告我:不应该从自己的源文件外部访问非公共类.
/Users/Wei/java/com/ciaoshen/thinkinjava/chapter7/InPackageClass.java:22: warning: auxiliary class PackageReachableClass in ./com/ciaoshen/thinkinjava/chapter7/PublicClass.java should not be accessed from outside its own source file
PackageReachableClass newPackageReachableClass =new PackageReachableClass();
^
/Users/Wei/java/com/ciaoshen/thinkinjava/chapter7/InPackageClass.java:22: warning: auxiliary class PackageReachableClass in ./com/ciaoshen/thinkinjava/chapter7/PublicClass.java should not be accessed from outside its own source file
PackageReachableClass newPackageReachableClass =new PackageReachableClass();
^
2 warnings
Hello, I am PublicClass.
Hi, I am PackageReachableClass.
Run Code Online (Sandbox Code Playgroud)
所以我的问题就出现了:无公共类仍然可以打包吗?如果这完全合法,为什么Java禁止我们从同一个包中的另一个文件中调用它们?
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |