元素的可见性取决于他的访问说明–private,public,protected或默认.因此,一个元素的可见性就由他所属的类和所属的包的可见性来决定.这种多层次的访问控制方法适用于丰富的访问权限分类.下表简要说明了各种访问层次:
private
|
默认
|
protected
|
public
|
|
在同一个类可见
|
是
|
是
|
是
|
是
|
在位于同一个包中的子类中可见
|
否
|
是
|
是
|
是
|
在位于同一个包中的非子类可见
|
否
|
是
|
是
|
是
|
在位于不同包中的子类中可见
|
否
|
否
|
是
|
是
|
在位于不同包的非子类可见
|
否
|
否
|
否
|
是
|
如果一个类的某一成员没有显式的修饰符,那么他在其包中就是可见的,但是在包外是不可见的.因此,可以在包的内部为元素使用默认的访问说明,使其在包内为公有的,而对别的包私有.
显式声明为public的成员在任何位置都是可见的,包括不同的类和包.他们的使用和访问不受限制.私有的成员仅仅对于他所属的类中的其他成员是可访问的.私有成员不受所在包的成员关系的影响.被指定为protected的成员对于其所属包和其全部子类(包括其他包中的子类)都是可访问的.
上表仅仅适用于类的成员,一个类仅仅有两种可能的访问级别:默认的和公有的.声明为public的类可以被任何其他的代码访问.如果一个类具有默认的访问权,他仅仅允许同一个包中的其他代码访问.而且,一个被声明为public的类必须驻留于一个同名的文件中.