第六章访问权限控制

6.1 包:库单元
1、当编写一个java源代码文件时,此文件通常被称为编译单元(有时候也被称为转译单元)。每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果该编译单元之中还有额外的类的话,那么在包之外的是无法看到这些累的,因为它们不是public类,而且它们主要用来为主public类提供支持。
6.1.1代码组织
1、Java可运行程序时一组可以打包并压缩这些文件的查找,装载和解释。
2、类库实际上是一组类文件。其中每个文件都有一个public类,以及任意数量的非public类。因此每个文件都有一个构件。如果这些构件从属于同一个群组,就可以使用关键字package。
6.1.2创建独一无二的报名
1、package名称的第一部分是类的创建者的反顺序的Internet域名。
2、Java解释器的运行过程如下:首先,找出环境变量CLASSPATH。CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包的名称并将每个包点替换成反斜杠,以从CLASSPATH根中产生一个路径名称。得到的路径名称会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与你所要创建的类名称相同的.class文件。
6.1.3定制工具库
6.1.4用import改变行为
6.1.5对使用包的忠告
6.2 Jvava访问权限修饰词
6.2.1 包访问权限
1、由于一个编译单元(即一个文件),只能隶属于同一个包,所以经由包访问权限,处于同一个编译单元中的所有类彼此之间都是自动可访问的。
2、取得某成员的访问权的途径:
①使该成员成为public。
②通过不加访问权限修饰词并将其他类放置于同一个包内的方式给成员赋予包访问权。于是包内的其他类也就可以访问该成员了。
③继承而来的类既可以访问public成员也可以访问protected成员。只有在两个类都处于同一个包内时,它才可以访问包访问权限的成员。
④提供访问器和变异器(get/set)方法,以读取和改变变量的值。
6.2.2 public:接口访问权限
6.2.3private:无法访问
1、除了包含该成员的类之外,其他任何类都无法访问这个成员。
6.2.4protected:继承访问权限
1、如果创建了一个新包,并自另一个包中继承类,那么唯一可以访问的成员就是源包的public成员。如果在同一个包内执行继承工作,就可以操纵所有的拥有包访问权限的成员。
2、有时候,基类的创建者希望有某个特定成员,把对它的访问权限赋予派生类而不是所有类。这就需要protected来完成这一工作。
6.3 接口和实现
1、把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。
6.4 类的访问权限
1、每个编译单元(文件)都只能有一个public类。
2、public 类的名称必须完全与含有该编译单元的文件名相匹配。
3、虽然不是很常用,但编译单元内完全不带public类也是可能的。
4、类即不可以是private,也不可以是protected的。所以对类的访问权限,只有包访问权限和public。
6.5 总结
1、控制对成员的访问权限有两个原因:①使用户不要碰触不该碰触的部分,这些部分对于内部类的操作是必要的,但是它并不属于客户端程序员所需接口的一部分。因此,将方法和域指定成private,对客户端程序员而言是一种服务。②让类库设计者可以更好更改类的内部工作方式,而不必担心这样会对客户端程序员产生重要的影响。

猜你喜欢

转载自blog.csdn.net/panda_____/article/details/80261088