修饰符分为以下两类:

*访问修饰符:public、protected和private

*非访问修饰符(包括strictfp、final和abstract)。


 先介绍访问修饰符,因此,要学习如何限制或允许访问所创建的类。Java中的访问控制需要一些技巧,因为它由四种访问控制(访问级别),但只有三种访问修饰符。第四个访问控制级别(称谓默认访问或包级访问)是指当不使用三种访问修饰符中的任何一种时所得到的访问控制。换句话说,无论是否显式的键入,声明的每个类、方法和实例变量都有一种访问控制。尽管所有4种访问控制(也就是所有三种修饰符)都使用于多数方法和变量声明,但是,声明类时只能使用public或默认访问,另外两种访问控制级别没有任何意义后面将会看到这一点。



类访问

 访问类意味着什么呢?当我们说来自一个类(类A)的代码可以访问另一个类(B)时,就意味着类A能够执行以下三种操作之一:


*创建类B的一个实例(instance)。

*扩展类B(换句话说,类A成为类B的一个子类)。

*访问(access)类B中的一些方法和变量,这取决于这些方法和变量的访问控制。

 在效果上,访问意味着可见性(visibility)。如果类A不能看到类B,则类B内的方法和变量的访问级别无关紧要,类A将没有任何方法访问那些方法和变量。


默认访问。具有默认访问的类在声明时其前面没有任何修饰符,它是在类声明中不键入修饰符时所得到的访问控制。可以将默认访问看成包级访问,因为具有默认访问的类只能被同一个包中的类看到。例如,如果A类和B类位于不同的包中,类A具有默认访问,则类B不能创建类B的实例,或者甚至不能声明类A的变量或返回类型。实际上,类A必须假定类B不存在,否则编译器就会报错。


公共访问。声明时带public关键字的类为来自所有包的所有类提供对公共类的访问。换句话说,Java Universe(JU)中的所有类都可以访问public类。但是不要忘记,如果试图使用的public类与你正在编写的类位于不同的包中,那么仍然需要导入public类。