public :接口访问权限
一:基本概念
表示的是在public关键字之后所有的成员申明自己对每个人都是可以使用,对于类库的客户端程序尤其重要;
e.g:
// Cookie.java文件必须位于test包的子目录dessert中
package test.dessert;
public class Cookie{
public Cookie(){
System.out.println(" Cookie constructor ");
}
void bite(){
System.out.println(" bite ");
}
}
// 创建一个cookie的使用程序:
import test.dessert.Cookie;
public class UseCookie{
public static void main(String[] args){
Cookie x = new Cookie();
// x.bite(); 不能访问:原因是bite()的权限只向dessert包的中类提供访问权限,而userCookie不是dessert包的中的类,所有编译器会报错
}
// OutPut:
//由于Cookie的构造函数是public修饰,所以在定义类初始化时,可以访问构造函数
Cookie constructor
}
二:默认包
不过这个例子可能出乎意料
class Cake{
public static void main(String[] args){
Pie p = new Pie();
p.f(); //可以编译
}
}
// Pie 类, 注意:Pie类和Cake处于一个目录中
class Pie{
void f(){
System.out.println(" pie.f() ");
}
}
//不仔细看是否绝对和上面的概念冲突,后面的Pie类的和f()都是拥有的包访问权限,因而是不可以被Cake所用,但是这只是其中一部分。
//Cake.java可以访问 Pie 是因为Pie.java和Cake.java处于同一个目录,且Pie.java未给自己指定任何包名,所以java默认其属于当前位置所在的包下面,那么两个类则 属于同一个包下面,也就是拥有包访问权限。