第六章 访问控制权限
一、包:库单元
1、import关键字导入完整的库,就会获得“包”(package)。
2、由于存在名字潜在的冲突,所以有必要对java中的命名空间进行完整的控制。
3、为Java创建一个源码文件的时候,他通常叫做一个“编辑单元”(“翻译单元”)。每个编译单元都必须有一个以.java结尾的名字。而且在编译单元的内部,可以有一个公共(public)类,它必须拥有与文件相同的名字。
编译一个.java文件时,会获得一个名字及完全相同的输出文件;但对于.java文件中的每个类,他们都有一种.class扩展名。他们可以封装和压缩到一个JAR文件里。Java解释器负责对这些文件的寻找、装载、解释。
3、创建独一无二的包名。
4、自定义工具库。
二、Java访问指示符
1、有好的(friendly)。为了获得访问权限,唯一的方法就是:
(1)使成员成为public(公共的)。这样,所有人从任何地方都可以访问他。
(2)变成一个“友好”成员,方法是舍弃所有访问指示符,并将其类置于相同的包内。这样,其他类就可以访问成员。
(3)一个继承的类既可以访问一个protected成员,也可以访问一个public成员(但不可以访问private成员)。只有在两个类位于相同的包内时,它才可以访问友好成员。
(4)提供“访问器/变化器”方法(“获取/设置”方法),以便读取和修改值。这是OOP环境中最正规的一种方法。
2、public:接口访问。
3、private:不能接触:多线程处理的时候非常重要。
4、protected:“友好的一种”
三、接口与实现
1、规定客户程序员哪些能够使用,哪些不能。
2、需要将接口同实施细节分离开。
四、类访问
1、每个编译单元(文件)都只能有一个public类。
2、public类的名字必须与包含了编译单元的那个文件的名字完全相符,甚至包括他的大小写形式。
3、可能(但并常见)有一个编译单元根本没有任何公共类。此时,可按照自己的意愿任意指定文件名。
4、对于类的访问只有两个选择:“友好的”或public。若不愿其他任何人访问那个类,可将所有构造器设为private。这样,在类的一个static成员内部,除自己以外的其他所有人都无法创建属于那个类的一个对象。