Java基础 :细说权限描述符

441 查看

Java权限描述符

Java中描述访问权限的描述符主要用在两个地方:

  • 在类名前用于说明类的访问权限的描述符:public 缺省的“包内可见”

  • 在成员变量和成员方法前面的描述符:public private protected 缺省的“包内可见”

第一类的描述符简单明了,只是为了说明一个定义出的类在其他类看来的可见性:

public描述的类是对被其他所有类可见的,也就是说其他的类都可以在自己的内部自由使用这个类(注意是对这个类可见而不是对这个类内部的成员可见);
缺省的“包内可见”,也就是说没有描述符描述的类,这样的类的访问权限只限于同包内的类,特别需要说明的是,同包的意思是在同一个package内的类,包括写在同一个java文件中的类,在同一个包内的类的内部是可以自由使用这个类的。

第二类的描述符稍显复杂,为了说明类中被权限描述符描述的成员变量和成员方法的可见性,注意,这个可见性是说在类中的可见性,而不是说某类的对象对成员的可见性。

public描述的成员对其他所有类都是可见的,也就是说其他的类的内部都可以自由使用这些成员:任何类都可以创建这个类的对象,并可以通过这个对象去访问这些public的成员;
缺省的“包内可见”,也就是没有描述符描述的成员,这些成员只能对包内的类可见:包内的其它类内部可以自由使用这些成员:包内的类都可以创建这个类的对象,并可以通过这个对象去访问这些成员;
private描述的成员只对自己可见,也就是说这个类的内部可以自由使用这些成员;
特别的是这个和继承相关的protected描述符,protected描述符描述的成员对包内的类可见,除此之外还对这个类的子类可见:子类内部可以去访问这些成员。
这个图是Java官方文档里对成员权限描述符的总结:

除此之外我们又画了这张图来说明权限描述符的可见性: