重读java编程思想之访问权限控制一

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默认其属于当前位置所在的包下面,那么两个类则 属于同一个包下面,也就是拥有包访问权限。




你可能感兴趣的:(java,java基础)