6.1 包 库单元
类库实际上是一组类文件, 其中每个文字都有一个public类, 以及任意数量的其他类, 其中每个文件都有一个构件, 如果希望这些构件同属于(每一个都有自己的独立的.class 和 .java文件)一个群组, 就可以使用关键字package。
使用package时, 他必须是文件中除了注释外的第一行代码,在文件起始处写,就意味着你在声明该编译单元在该类库的一部分,每一个声明后的文件都只有一个public类, 且类的名字要与文件的名称相同。
6.2 权限修饰词
public , private , protected这几个java访问的修饰词在使用时,是在类的名字前面使用的,在不提供任何访问权限修饰词时,意味着他是包访问权限。
6.2.1 包访问权限
默认访问权限没有任何修饰词,但通常指的是包访问权限(有时也表现为friendly),意味着当前包中所有的类都有访问权限,但这个包外的所有类,这个成员却都是private。
6.2.3 private : 你无法访问
关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问他。默认的包访问权限已经提供了足够的隐藏措施,使用类的客户端程序员是无法访问包访问权限成员的,通常要考虑的是,那些成员是要明确公开给客户端程序员使用的,从而将他们声明为public。
//: access/IceCream.java
// Demonstrates "private" keyword.
class Sundae {
private Sundae() {}
static Sundae makeASundae() {
return new Sundae();
}
}
public class IceCream {
public static void main(String[] args) {
//! Sundae x = new Sundae();
Sundae x = Sundae.makeASundae();
}
} ///:~
上面的例子中,无法调用构造器来创建对象,要通过makeASundae()方法来创建对象。
6.2.4 protected: 继承访问权限
如果创建一个新包,并自另一个包中继承类,那么唯一可以访问的成员就是源包中的public成员(如果在同一个包中执行继承任务,就可以操纵所有具有包访问权限的成员,有时基类的创建者某个特定成员,把对他的访问权限赋予派生类而不是所有类,这就需要protected来, protected也提供包访问权限,相同包内的其他类也是可以访问protected成员的。
6.4 类的访问权限
包访问权限只有两个选项,包访问权限或者public的。如果不希望任何有对该类的访问权限,把所有的构造器设置为private,这样任何人都无法创建该类的对象