《Java编程思想》06.访问权限控制

  • 如何把变动的事物与保持不变的事物区分开来
  • 访问权限控制的等级(大->小):public、protected、包访问权限(没有关键词)、private

包:库单元

代码组织

  • 编译一个.java文件,文件中的每个类都会有一个输出文件.class,文件名与类名相同
  • Java的可运行程序是一组可以打包并压缩为一个Java文档文件(JAR)的.class文件。Java解释器负责这些文件的查找、装载和解释
  • 类库 ---实际上---> 一组类晚间
  • Java包的命名规则全部使用小写字母
package access.mypackage;
public class MyClass{ /* ... */ }

使用import来使access中的名称可用

import access.mypackage.MyClass

创建独一无二的包名

  • package名称的第一部分:类的创建者的反序Internet域名

思考:条件编译

Java访问权限修饰词

包访问权限

  • 默认访问权限(没有任何关键字)
  • 有时也表示成friendly
    包中的类相对于:
当前包所有其他类 包之外的所有类
有访问权限 相当于与private

取得某成员的访问权限的途径

  • 使改成员为public
  • 成员不加修饰词 & 其他类置于同一个包
  • 继承 - 可访问public成员、protected成员
  • 提供访问其(accessor)和变异器(mutator) - get/set方法

public:接口访问权限

private:你无法访问

通常考虑的是,那些成员是想要明确公开给客户端程序员使用的,从而将它们声明为public,而在最初,你可能不会认为自己经常会需要使用private,因为没有它,照样可以工作。然而,事实很快就会证明,对private的使用是多么的重要,在多线程下更是如此。

  • 任何可以肯定只是该类的一个“助手”方法的方法,都可以把它指定为private,确保不会在包内的其他地方误用

protected:继承访问权限

接口和实现

访问权限的控制->具体实现的隐藏、封装

  • 设定客户端程序员可以使用和不可以使用的边界
  • 将接口和具体实现进行分离

类的访问权限

  • 对于类的访问权限,仅有两个选择:包访问权限或public

总结

  • 控制成员的访问权限的两个原因:
    • 使用户不要触碰那些不该触碰的部分
    • 让类库设计者可以更改类的内部工作方式

    面向扩展开放,面向修改关闭

当具备了改变底层实施细节的能力,不仅可以随意地改善设计,还可能会随意地犯错误,当了解到你所犯的错误是相对安全的时候,就可以更加放心地进行实验,也就可以更快地学会,更快地完成项目

posted @ 2020-03-28 16:58  索隆不喝酒  阅读(213)  评论(0编辑  收藏  举报