1、概述
在java的程序设计中,有去对程序中的类、变量、方法做访问权限设计,比如public关键字修饰的允许所有程序访问,有private关键字修饰的只允许类内部访问等。那么java这样设计的初衷是什么呢?
目的: 为了应对程序的变化,并去封装变化保证调用者的稳定。
举个例子:
如果你是一个类库的设计者做了一个类库供客户端去调用,并且你所有的变量和方法都允许客户端去访问,有一天你需要去迭代类库,你会发现你不敢去删除任何变量或者方法,因为你不确定这个变量是否有被客户端使用如果一旦删除很有可能使客户端报错,所以java设计中有访问权限设计,你可以根据需要把成员变量设计为私有并暴露公共的方法供客户端调用,这样当你去迭代类库时就很清晰知道什么是可以动的什么是不能动的了perfect。
java他是怎样去做访问权限的设计呢?java借鉴了linux的文件系统理念引入了包的概念,其中包中包含多个文件或者其他包,每个文件中只允许有一个外部可访问的类。基于包的概念用关键词去修饰权限,分别有public,protected,default(可省略)和private,权限如下表:
关键词 | 本类 | 子类 | 本包 | 非子类的其他包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | × | √ | × |
private | √ | × | × | × |
2、public
public关键词修饰的类、变量或者方法允许包内或者包外的程序访问。
3、protected
protected关键字主要服务于类的继承,它允许继承父类的子类有父类protected修饰的变量和方法的访问权限。
4、default
default修饰时可以默认省略,它允许本包的其他程序访问。
5、private
private是最严格的关键词,只允许类内部访问。
6、总结
从上述我们也就知道,它设计的出发就是去如果3个作用空间的权限:
①类作用空间
②继承空间
③包空间