第六章 访问权限控制
包(package)
包的概念
包在概念上类似于c/c++中的name space的概念,主要是一种代码组织的结构.其主要作用是
避免在大型工程开发时,由于参与人员过多,所导致的命名冲突情况的发生.同时包这种代码
组织形式也生成了java的一种权限管理方式.
定义包的方式
通过package语句定义包,且该语句必须是文件中除注释语句外的第一行.
package packagename;
包的命名规则
反序书写包开发者的Internet域名: net.visiontech.kj.xxx;
包的使用
使用包时,在文件开头部分通过import语句来对包进行引用.这里要注意对于CLASSPATH环境
变量的设置,否则很可能找不到相应的定义.其查找方式是将CLASSPATH作为搜索的根目录,例
如CLASSPATH = /tmp.然后Java解释器就会去寻找/tmp/net/visiontech/kj/目录下有没有具
体的类名称.(若想使用本工程下的包,记得在CLASSPATH中加入 “.” 即当前目录标识符)
默认包
当文件没有将自己包含在任何包的情况下,Java会将此种文件自动的看做隶属于该目录(文件
所在目录)的默认包中.
各种访问权限(非常重要,进行深刻理解)
包访问权限
- 类以及类内的各个成员没有进行明确的权限声明时,将自动赋予包访问权限.即该处于相
同包内的各个类之前可以互相访问彼此的类成员函数,类成员变量.但包外的类无法对
具有包访问权限的成员变量,成员函数进行访问. - 默认包遵循上述规则.
- 类以及类内的各个成员没有进行明确的权限声明时,将自动赋予包访问权限.即该处于相
public权限
- 使用关键字public修饰的成员具有public权限,即所有public成员是可以被任何人所使
用的.可以把被public修饰的成员认为是该类对外的公共接口,是与外部进行交互的重
要通道.
- 使用关键字public修饰的成员具有public权限,即所有public成员是可以被任何人所使
protected权限
- 使用关键字protected修饰的成员具有protected权限.该权限主要是运用于类的集成上,
基类的成员若具有protected权限,则集成类可以使用该protected权限.同时
,protected也提供包访问权限,也就是说相同包内的其他类可以访问protected成员.
- 使用关键字protected修饰的成员具有protected权限.该权限主要是运用于类的集成上,
private权限
- 使用关键字private修饰的成员具有private权限.具有该权限的成员除了包含该成员的
类外,其他任何类都无法对其进行访问(包括同一个包内的其他类).该权限是进行实现
与接口分离的一个重要途径.例:private构造函数可以控制如何创建对象,单例模式就
是一个比较好的例子.
- 使用关键字private修饰的成员具有private权限.具有该权限的成员除了包含该成员的
权限修饰词与类
- 对于类的访问权限只有两种访问权限:包访问权限与public权限
- 若一个类希望被其他人使用,则对该来使用public修饰词,其余情况下使用包访问权限(
即无修饰词) - 每一个编译单元(文件)都只能有一个public类,且该类的名称必须与包含该类的编译单
元(文件)的名称完全一致(包括大小写) - 若编译单元(文件)内不存在public类,则该编译单元可以进行任意命名(不常用)