如何把变动的事物与保持不变的事物区分开.
包:库单元
包内包含有一组类,它们在单一的名字空间之下被组织在了一起.
当编写一个 Java 源代码文件时,此文件通常被称为编译单元.
每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个 public 类,该类的名称必须与文件的名称相同(包括大小姐,但不包括后缀名称.java). 每个编译单元只能有一个 public 类.否则编译器就不会接受.
如果在该编译单元中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是 public 类.他们主要为 public类提供服务.
代码组织
类库实际上是一组类文件. 每个文件都有一个 public 类,以及任意数量的非 public 类.
Java 包的命名规则全部使用小写字母,包括中间的字也是.
创建独一无二的包名
将特定包的所有.class 文件都置于一个目录下.利用操作系统的层次化的文档结构来解决这一问题.
定制工具库
用 import 改变行为
java 没有 C 的条件编译功能,该功能可以使你不必更改任何程序代码.就能够切换开关并产生不同的行为.
java 去掉此功能的原因是 C 在绝对大多数的情况下是为了解决跨平台的问题. java 不需要.
对使用包的忠告.
无论何时创建包,都已经在给定包的名称的时候隐含地指定了目录结构.
这个包必须位于其名称所指定的目录之中,且必须以 CLASSPATH 开始的目录中可以查询到的.
Java 访问权限修饰词
包访问权限
默认访问权限没有任何关键字,但通常是指包访问权限.
获取某成员的 访问权途径:
1.使该成员为 public.
2.通过不加访问权限修饰词并将其他类放置于同一个包内的方式给成员赋予包访问权.
3.继承.
4.提供访问器和编译器方法(get/set)
public:接口访问权限
声明自己对每个人都是可用的.
private: 你无权访问
除了包含该成员的类之外,其他任何类都无法访问这个成员.
protected:继承访问权限
处理继承的概念.通过继承可以利用一个现有类.
接口和实现
封装: 把数据和方法包装进类中,以及具体实现的隐藏. 结果为一个同时带有特征和行为的数据类型.
1.设定客户端程序员可以使用和不可以使用的界限.
2.将接口和具体实现分离
类的访问权限.
访问权限修饰词可以用于确定库中的哪些类对于该库的使用者是可用的.
- 每一个编译单元(文件)都只能有一个 public 类.
- public 类的名称必须完全与含有该编译单元的文件名称匹配,包括大小写.
- 编译单元内完全不带 public 类也是可能的.
类既不可以是 private 的,也不可以是 protected 的.所以对于类的访问权限,仅有两个选择:包括权限或 public
如果不希望其他任何人对该类拥有访问权限,可以把所有的构造器都指定为 private,从未阻止任何人创建该类的对象.但是也有一个类外,就是该类的 static 成员可以内部创建.
总结
控制对成员的访问权限有两个原因.
1.为了使客户不要碰触那些他们不该碰触的部分.
2.为了让类库设计者可改变类的内部工作方式.而不必担心这样会对客户端程序员产生重大影响.
访问权限控制专注于类库创建这和该类库的外部使用者之间的关系,这种关系也是一种通讯方式.