第6章-访问权限控制
为什么会有访问控制权限
面向对象的设计中需要考虑一个问题:“如何把变动的事物与保持不变的事物区分开来”。
当一个类库被设计出来提供给别人使用时,类库的设计者们要保证当类库发布新版本时,类库的消费者(程序猿)们不需要改写原有的代码,设计者们必须在不影响客户端代码的情况下进行修改和改进。
然而与此同时,新的问题出现了:设计者们如何知道他们改哪些代码而不影响码农们的客户端代码呢,因为他们并不知道自己设计的类库中哪些代码被客户端使用而哪些没有。
要想解决以上的问题,办法只有一个:大牛们在设计类库时,他们向客户端程序猿们指明了哪些是可用的,哪些是不可用的,这样,设计者们在更新类库时,就只会修改那些客户端代码不可用的部分,所以程序猿们升级类库之后就不用修改代码了。
访问权限有哪些
访问权限控制的等级,从大到小依次为:public
→protected
→包访问权限(通常称为default,无关键字)
→private
四种访问控制权限之间的异同如下表所示:
权限 | 当前类 | 同包类 | 子类 | 其他类 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
default | √ | √ | ||
private | √ |