Java 之路 (六) -- 访问权限控制(Package、Pu

2018-08-07  本文已影响0人  whd_Alive

这一章内容比较少,也比较基础。

不多废话,下面开始这一章的学习吧。


学习内容


1. Package

(1) 原因:为了更好的组织类,Java 提供了包机制,用来区别类名的命名空间。

(2) 包的作用:

  1. 利用操作系统的层次化的文件结构,将特定包的 .class 文件都置于一个目录下。
    1. 包创建了新的命名空间,解决命名冲突问题。
    2. 便于查找目录结构中的类
    3. 将 package 分解为机器上的某个目录,当 Java 程序运行需要加载 .class 文件的时候,可以确定 .class 文件再目录上所处的位置。
  2. 将构件捆绑到一个内聚的类库单元。
  3. 限定了访问权限,访问权限修饰词得以起到作用。

(3) 代码组织

(4) 包的使用

(5) Java 解释器的运行过程

首先解释一下 Java 解释器的概念:

解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并在特定的平台进行运行

  1. 找出环境变量 CLASSPATH(可以通过操作系统设置,也可不用设置,一般编译环境会为你设置)CLASSPATH 包含一个或多个目录,用来查找.class文件的根目录。
  2. 需要从根目录进行查询,解释器获取包的名称,将点号替换为反斜杠,具体哪种反斜杠视操作系统而定。
  3. 将得到的路径与 CLASSPATH 中的各个不同的项相连接,解释器就在这些目录中查找与你创建的类名称相关的 .class 文件。

(6) 包的实际用处 - 我们通过使用包来干些什么?


2. Java 访问权限

关于继承,在下一章会介绍。

(1) 四种访问权限:

注意:关于 protected 允许子类访问这一点

子类可以直接访问父类 protected 的属性/方法,但是不能通过父类的实例对象来访问父类的属性/方法。

实际上可以理解为 子类继承了父类的 protected 方法,与其说"父类的 protected 方法被子类访问",不如说"子类访问了 从父类那里继承而来的 protected 方法"。通过继承,子类也拥有了该 protected 方法,所以变相就是子类访问了"自己的方法"。

结论:

权限 类内 同包 不同包子类 不同包非子类
private × × ×
默认 × ×
protected ×
public

(2) 封装

(3) 访问权限控制将权限的边界划在数据类型的内部,两个原因:

  1. 设定客户端程序员可以使用和不可以使用的界限。

    说白了就是使用户不要触碰那些他们不该触碰的部分,只提供给他们能实现的功能,而非实现细节。

  2. 将接口和具体实现进行分离。

    类库设计者设计一个功能模块,在底层进行实现,而只对客户端程序员暴露出接口,客户端程序员通过调用该接口即可使用该功能。

    严格将接口和实现进行分离后,类库设计者就可以随意更改类的内部工作方式(出于某种目的,比如提高效率),而不影响客户端程序员的使用,实现方式改变,但接口不变。


总结

这一章内容很少,大体上就是类和类库的关系,其中有两点:

  1. 类如何打包到类库中,结构如何
  2. 如何控制访问的权限

基本就是些概念的东西,但是如何在实际中有良好的使用才是关键所在。

本章结束,共勉。

上一篇下一篇

猜你喜欢

热点阅读