深入探索 Java 世界
隐藏实施过程——访问控制
每个库的用户 (client programmer) 必须
能依赖自己使用的库,并知道一旦新版
本的库推出,自己不需要改写代码。
库创建者应声明哪些是客户程序员可以
是使用的,哪些是不可以使用的。
A primary consideration in object-oriented design is
"separating the things that change from the things that
stay the same."
包:库单元
用 import 来引入包或包里的成
员。 import java.util.*;
import java.util.Vector;
之所以要这样的引入,是为了
提供一种特殊的机制,来实现
命名空间的管理。
编译单元
每个编译单元必须是以 .java 结尾的文件
名称,在一个编译单元里,可以有一个
public 的类,这个类的名字必须与文件的
名字相同。在一个单元内,只能有一个
public 的类。
编译一个 .java 文件时,对应于文件中的
每一个类,会得到一个 .class 文件,文件
名与类的名字相同。一个程序是一
堆 .class 文件。
定义包
一个库是一堆这样的 .class 文件,它们被定义为
一个包,但是并不真正地合并在一个文件中。
package mypackage;
public class MyClass;
现在,如果客户程序员想要使用 MyClass ,就
要用 import 来引入 mypackage 包,或者是使用
MyClass 的全名。
import mypackage;
MyClass m = new MyClass();
mypackage.MyClass m = new
mypackage.MyClass();