企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### [public: 接口访问权限](https://lingcoder.gitee.io/onjava8/#/book/07-Implementation-Hiding?id=public-%e6%8e%a5%e5%8f%a3%e8%ae%bf%e9%97%ae%e6%9d%83%e9%99%90) 当你使用关键字**public**,就意味着紧随 public 后声明的成员对于每个人都是可用的,尤其是使用类库的客户端程序员更是如此。假设定义了一个包含下面编译单元的**dessert**包: ~~~ // hiding/dessert/Cookie.java // Creates a library package hiding.dessert; public class Cookie { public Cookie() { System.out.println("Cookie constructor"); } void bite() { System.out.println("bite"); } } ~~~ 记住,**Cookie.java**文件产生的类文件必须位于名为**dessert**的子目录中,该子目录在**hiding**(表明本书的"封装"章节)下,它必须在 CLASSPATH 的几个目录之下。不要错误地认为 Java 总是会将当前目录视作查找行为的起点之一。如果你的 CLASSPATH 中没有 \*\*.\*\*,Java 就不会查找当前目录。 现在,使用**Cookie**创建一个程序: ~~~ // hiding/Dinner.java // Uses the library import hiding.dessert.*; public class Dinner { public static void main(String[] args) { Cookie x = new Cookie(); // -x.bite(); // Can't access } } ~~~ 输出: ~~~ Cookie constructor ~~~ 你可以创建一个**Cookie**对象,因为它构造器和类都是**public**的。(后面会看到更多**public**的概念)但是,在**Dinner.java**中无法访问到**Cookie**对象中的`bite()`方法,因为`bite()`只提供了包访问权限,因而在**dessert**包之外无法访问,编译器禁止你使用它。