《Thinking In Java》读书笔记——第六章 访问权限控制

1 包

解决了同名Class共存的问题,例如Apache的CommonUtil就经常会和自己创建的CommonUtil冲突。包的概念类似框架里的命名空间(namespace)。它为类分组,以包为单位,其中的所有Class为一组,对外隔离,既从物理上分组又从逻辑语义上进行分组,对代码的管理起到一定作用。

 

2 访问权修饰词

一般认为有public、protected、private(如果不写默认还有一个叫做default或friendly,也叫作包访问权限)。

friendly/default(包)访问权限:允许将包内所有相关类组合起来,当前包就是一个整体。

public访问权限:public声明的成员声明自己对每个人都是可以访问的。

private访问权限:除了包含该成员的类之外,其它任何类都无法访问这个成员。例如单例模式,getInstance调用本地构造器,但是构造器私有,外部无法访问。

protected访问权限:两个不同的包,子类继承父类,子类只能使用父类的public成员,有时父类希望将部分成员的访问权限赋予子类,但又不想给其它类。(同一个包内,protected修饰的成员是可以互相访问的)。

访问权限当前类同包类子类非子类&&外包类
public
protected
default/friendly
private

修饰符将“代码提供者”和“代码消费者”隔离开,通过对类成员进行修饰,能达到控制 “代码消费者” 权限的目的。例如“代码消费者”调用一个public方法,此方法的实现是由一个private方式完成,调用方不能也不需要知道 “代码提供者”具体做了什么,这样也方便 “代码提供者”随时修改private的实现。同时也能有效防止“代码消费者”对成员变量的任意修改。

 

3 接口和实现

把成员方法和成员变量封装成类之后,供其他人调用。当需要将访问权限划分到此类外部的时候,就可以让此类实现一个接口,调用者直接向接口发送消息,避免了与类的直接交互。因此,推测接口(interface)中的方法一般都是public修饰,是不是因为它只是一个抽象层,可以放心大胆的让别人调用,而又不用担心数据安全呢?

 

总结:访问权限控制,有点类似于程序设计时的“系统边界”(https://blog.csdn.net/nickDaDa/article/details/89631664),可以将类之间的关系看作子系统之间的关系,每个子系统都有自己的系统边界,如果是这样是不是也可以把访问修饰符称作“Coding Border”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值