public:接口访问权限
2013-08-22 16:30
120 查看
当你使用关键字 public,就意味着 public 之后紧跟着的成员声明对每个人都是可用的,
尤其是使用程序库的客户端程序员更是如此。假设你定义了一个包含下面编译单元的
dessert 包:
//: c05:dessert:Cookie.java
// Creates a library.
package c05.dessert;
public class Cookie {
public Cookie() {
System.out.println("Cookie constructor");
}
void bite() { System.out.println("bite"); }
} ///:~
记住,Cookie.java 产生的类文件必须位于名为 dessert 的子目录之中,该子目录在 c05
(参阅本书第 5 章)之下,而 c05 则必须位于 CLASSPATH 指定的众多路径的其中之一
的底下。不要错误地认为 java 总是将当前目录视作是查找行为的起点之一。如果你的
CLASSPATH 之中缺少一个‘.’作为路径之一的话,java 就不会查找那里。
现在如果你创建了一个使用 Cookie 的程序:
//: c05:Dinner.java
// Uses the library.
import com.bruceeckel.simpletest.*;
import c05.dessert.*;
public class Dinner {
static Test monitor = new Test();
public Dinner() {
System.out.println("Dinner constructor");
}
public static void main(String[] args) {
Cookie x = new Cookie();
//! x.bite(); // Can't access
monitor.expect(new String[] {
"Cookie constructor"
});
}
} ///:~
你就可以创建一个 Cookie 对象,因为 Cookie 的构造器是 public 而其自身也是 public
的。(此后我们将会对 public 类的概念了解更多。)但是,由于 bite( )只向在 dessert
包中的类提供访问权,所以 bite( ) 成员在 Dinner.java 之中是无法访问的,为此编译
器也禁止你使用它。
尤其是使用程序库的客户端程序员更是如此。假设你定义了一个包含下面编译单元的
dessert 包:
//: c05:dessert:Cookie.java
// Creates a library.
package c05.dessert;
public class Cookie {
public Cookie() {
System.out.println("Cookie constructor");
}
void bite() { System.out.println("bite"); }
} ///:~
记住,Cookie.java 产生的类文件必须位于名为 dessert 的子目录之中,该子目录在 c05
(参阅本书第 5 章)之下,而 c05 则必须位于 CLASSPATH 指定的众多路径的其中之一
的底下。不要错误地认为 java 总是将当前目录视作是查找行为的起点之一。如果你的
CLASSPATH 之中缺少一个‘.’作为路径之一的话,java 就不会查找那里。
现在如果你创建了一个使用 Cookie 的程序:
//: c05:Dinner.java
// Uses the library.
import com.bruceeckel.simpletest.*;
import c05.dessert.*;
public class Dinner {
static Test monitor = new Test();
public Dinner() {
System.out.println("Dinner constructor");
}
public static void main(String[] args) {
Cookie x = new Cookie();
//! x.bite(); // Can't access
monitor.expect(new String[] {
"Cookie constructor"
});
}
} ///:~
你就可以创建一个 Cookie 对象,因为 Cookie 的构造器是 public 而其自身也是 public
的。(此后我们将会对 public 类的概念了解更多。)但是,由于 bite( )只向在 dessert
包中的类提供访问权,所以 bite( ) 成员在 Dinner.java 之中是无法访问的,为此编译
器也禁止你使用它。
相关文章推荐
- 证明接口interface中定义的方法的访问权限为public
- private、 protected、 public、 internal 修饰符的访问权限
- private,protected,public的访问权限
- C++中 public protected private 访问权限
- java面试题三十 public,private,protected,default访问权限
- java类的访问权限问题(public default private protected)
- C++中关于public、protect、private的访问权限控制
- 友元、派生、public、private、protected访问权限
- 一个C#的问卷!private、 protected、 public、 internal 修饰符的访问权限
- java里面的四种访问权限修饰符(private、缺省、protected、public)
- Java包及访问控制权限--(private/default/protected/public)及命名规范
- public,protect,private访问权限
- C++中public,protected,private派生类继承问题和访问权限问题
- public protected private 成员函数和成员变量在public protected private 继承后访问权限问题
- Java【public、private、protected区别】-访问权限
- 简述 private、protected、internal、public、protected internal 修饰符的访问权限
- public、private、protected三者访问权限解析
- 简述public private protected internal修饰符的访问权限
- public protected private 成员函数和成员变量在public protected private 继承后访问权限问题
- public,private,protected访问权限在Java,C++中的解析