Java编程思想——day 6
从现在开始,每天学习并记录。
2018/03/21
第六章 访问权限控制
访问权限修饰词:public、protected、包访问权限(没有关键字)、private
。
1、包:库单元
- 包内含有一组类,他们在单一的名字空间之下被组织在了一起。
- 例如:工具库被组织在
java.until
名字空间之下。ArrayList
的类在其中,全名为:java.util.ArrayList
; - 创建实例:
java.util.ArrayList list = new java.until.ArrayList();
。 - 若想导入单个的类,可以在
import
语句中命名该类:import java.until.ArrayList;
之后创建实例只需要使用语句ArrayList list = new ArrayList();
即可。 - 想要导入所有的类:
import java.until.*;
- java源代码文件被称为 “ 编译单元 ” 或 “ 转译单元 ” 。每个编译单元必须有一个后缀名.java,编译单元内可以有一个(不可有多个,最都一个)public类,该类的名称必须与文件的名称相同。
- .java文件编译后,在.java文件中的每个类都会有一个输出文件,输出文件名称与.java文件中的每个类的名称相同,只是多了一个后缀名.class。即:
.java
→编译→.class
。 - java可运行程序是一组可以打包并压缩为一个Java文档文件(JAR,使用Java的jar文档生成器)的.class文件。Java解释器负责这些文件的查找、装载和解释。
- 类库实际上是一组类文件
package
语句必须是文件中除注释以外的第一句程序代码:package access;
,表示你在声明该编译单元是名为access
的类库的一部分。- 注意:Java包的命名规则全部使用小写字母,包括中间的字母。
packet
和import
是将单一的全局名字空间分割开。packet
名称的第一部分是类的创建者的反顺序的Internet域名(域名独一无二,因此packet名称也会独一无二)。- 将
packet
名称分解为机器上的一个目录。 - ***Java解释器的运行过程:***1、找出环境变量CLASSPATH(可以通过操作系统开设置,有时也可以通过安装程序(用来在你的机器上安装Java或基于Java的工具)来设置)。CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称。得到的路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与你所要创建的类名称相关的.class文件。(解释器还会去查找某些涉及Java解释器所在位置的标准目录。)
- 包的名称一定要对应目录路径。
2、Java访问权限修饰词
- 包访问权限: 没有使用访问权限修饰词时,默认是包访问权限(有时也表示成friendly)。访问器(accessor)和变异器(mutator)方法也成为get/set方法可以读取和改变数值。
- public:接口访问权限;
- private:你无法访问;
- protected:继承访问权限。
3、接口的实现
- 访问权限的控制,通常被称为具体实现的隐藏。
- 把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作封装。
- 类浏览器是一种以非常有用的方式来查阅所有可用的类,并告诉你用它们可以做些什么(也就是显示出可用成员)的工具。
- 在Java中,用Web浏览器浏览JDK文档可以得到使用类浏览器的相同的效果。
4、类的访问权限
- 限制:
1.1 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类;
1.2 public类的名称必须完全.与含有该编译单元的文件名相匹配,包括大小写;
1.3 虽然不是很常用,但编译单元内完全不带public类也是可能的。 - 类的访问权限只可以是public或protected。如果不希望有其他人对该类拥有访问权限,则可以将所有的构造器都指定为private,从而阻止任何人创建该类的对象。但是有一个例外,就是你在该类的static成员内部可以创建。