1、重构时考虑的一个问题:如何把变动的事物与保持不变的事物区分开来。
为了解决这一问题,java提供了访问权限修饰词:public,protected,包访问权限(没有关键词)和private
2、作为一名类库设计人员,应尽可能将一切方法都定为private,而仅向客户端程序员公开你愿意让他们使用的方法。
3、如何将构建捆绑到一个内聚的类库单元?
java用关键字package加以控制,而访问权限修饰词会因类是存在于一个相同的包,还是存在于一个单独的包而受到影响。
6.1包:库单元
1、当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元),每个编译单元都必须有一个后缀.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同。每个编译单元只能有一个public类。
6.1.1代码组织
1、当编译个一.java文件时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀名.class。
2、java运行程序是一组可以打包并压缩为一个java文档文件(jar)的.class文件。java解释器负责这些文件的查找,装载和解释。
3、如果使用package语句,它必须是文件中除注释以外的第一句程序代码。java包的命名规则全部使用小写字母,包括中间的字也是如此。
6.1.2创建独一无二的包名
1、将所有的文件收入一个子目录可以解决以下问题:
(1)将特定包的所有.class文件都置于一个目录下。
(2)创建独一无二的名称以及查找有可能隐藏于目录结构中某处的类。
2、java解释器的运行过程如下:首先,找出环境变量CLASSPATH。CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称。解释器就会在这些目录中查找与你所要创建的类名称相关的.class文件。
6.1.3定制工具库
6.1.4用import改变行为
6.1.4对使用包的忠告
包的名称对应目录路径
6.2java访问权限修饰词
6.2.1包访问权限
1、默认访问权限没有任何关键字,但通常是指包访问权限。
6.2.3private:你无法访问
1、除非必须公开底层实现细节(此种境况很少见),否则就应该将所有的域指定位private。
6.2.3protected:继承访问权限
1、可以被继承自己的类访问
6.3接口和实现
1、访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。
2、访问权限控制将权限的边界划在子数据类型的内部。原因如下:
(1)要设定客户端程序员可以使用和不可以使用的界限。
(2)接口和具体实现进行分离。
6.4类的访问权限
1、类既不可以是private。所以对于类的访问权限,仅有两个选择:包访问权限或public。如果不希望其他任何人对该类拥有访问权限,可以把所有的构造器都指定为private。