第六章 访问权限控制
6.1 包:库单元
import:提供管理名字空间的机制。
编译单元:一个Java源代码文件。其中只有一个public类,并且名称与文件名相同。这个文件中也可以有其他的类,但是不能是public类,并且主要是为了对public类提供支持的。
6.1.1 代码组织
1、Java可运行程序是一组可以打包并压缩为一个Java文档文件的.class文件。
Java解释器负责这些文件的查找、装载和解释。
2、类库其实是一组类文件。
其中每个文件都有一个public类和任意数量的非public类。因此每个文件都有一个构件。
如果希望这些构件从属于同一个群组,那么我们就要使用关键字package。
3、package应是文件中除注释外的第一句代码:
package access
6.1.2 创建独一无二的包名
1、将特定包的所有.class文件都放在一个目录下。
同时解决了两个问题:怎样创建独一无二的名称以及怎样查找有可能隐藏于目录结构某处的类。
2、按照惯例,包名的第一部分是作者域名反顺序。所以就解决了如何创建独一无二的包名。
第二部分会把你的package名称分解为机器上的目录。
3、冲突:两个不同的包却含有同一个类名。
这个时候就不能简写了,就要指定完整的类的路径。
6.1.3 定制工具库
自己可以开始写自己的工具库了。
6.1.4 用import改变行为
1、Java没有C的条件编译功能。
条件编译:切换开关并产生不同的行为。C用其来实现跨平台。
但是Java本身就是一个跨平台的语言,所以不必拥有条件编译的功能。
2、条件编译同样存在用处:例如调试版代码拥有调试功能,但是正式版代码不具有调试功能。
6.1.5 对使用包的忠告
1、包的名称对应目录路径。
2、必须能在CLASSRATH中能查询到。
6.2 Java访问权限修饰词
6.2.1 包访问权限
1、default(friendly):这意味着当前的包中的所有其他类对那个成员都具有访问权限,但是说对于这个包外的所有类,这个成员显示的是private。
2、访问器(accessor\get方法)、变异器(mutator\set方法)。这对OOP而言是最优雅的方式,也是JavaBeans的原理。
6.2.2 public:接口访问权限
1、public意味着所有人都可以用。
2、默认包:对于处于同一级目录的文件,如果没有给他们指定包的话,其实它们是存在于同一个默认包中的。
6.2.3 private:你无法访问
1、除了包含此成员的类之外,其余任何类都无法访问这个成员。
2、任何肯定为一个类的“助手”的方法,都可以标记为‘private‘。
6.2.4 protected:继承访问权限
1、提供包访问权限。
2、允许派生类访问(基本就是对其他包中的派生类来说的)。
6.3 接口和实现
1、把数据和方法装进类中,以及把具体实现隐藏起来,这被称为封装。
2、封装的原因:规定程序使用者的使用边界问题。
将接口和实现分离开来。
6.4 类的访问权限
1、为了控制某个类的访问权限,修饰词必须出现在关键字class之前。
2、每个编译单元只能有一个public类。
虽然不常用,但是编译单元内完全不带public类也是可能的。
3、类的访问权限其实就两种:public和protected。主要的区别就是在创建类的对象的时候的区别。
如果不声明public,就自动标记为包访问权限。
6.5 总结
1、设定访问权限控制,就是在类库设计者和客户端程序员之间建立一种界限,同时也是建立一种联系。
类库设计者不想让客户端程序员看到自己的源码,只想让他们使用自己开发出来的功能。
2、关键字package、包的命名方式、import使得你对Java的名称进行完全控制。
3、控制权限的原因:一是为了使用户不触碰不改触碰的部分。
二是让类库设计者可以更改自己的类库实现。
4、使用者只需要使用就行了,这样即使类库更新了他们也不用去修改自己的代码。
5、类的公共接口是用户真正能看到的,所以这一部分的分析和设计是决定该类是否正确的重要部分。
原文:https://www.cnblogs.com/xrzhang/p/14037576.html