包访问权限

来源:互联网 发布:unity3d ai插件 编辑:程序博客网 时间:2024/05/22 17:47

如果你根本没有给定任何访问权限,例如像本章前面的所有示例,将会出现什么情况呢?默

认访问权限没有任何关键字,但通常是指包访问权限(package access,有时也表示成为

“friendly”)。这就意味着当前的包中的其他类对那个成员有访问权限,但对于在这个包之

外的所有类,这个成员却是 private。由于一个编译单元,即一个文件,只能隶属于一个

单一的包,所以经由包访问权限,处于某个单一编译单元之中的所有类彼此之间都是自动可

访问的。

 

包访问权限允许你将包内所有相关的类组合起来,以使它们彼此之间可以轻松地相互作用。

等你把类组织起来放进一个包内之后,也就给它们的包访问权限的成员赋予了相互访问的权

限,你拥有了该包内的程序代码。“只有你拥有的程序代码才可以访问你所拥有的其他程序

代码”这种想法是合理的。你应该说,包访问权限为把类群聚在一个包中的做法提供了意义

和理由。在许多语言中,你在文件内组织定义的方式是任意的,但在 java 中,则要强制你

以一种合理的方式对它们加以组织。另外,你可能还想要排除这样的类:它们不应该访问在

当前包中所定义的类。

 

类掌握着控制哪些代码对自己的成员享有访问权的权力。不存在任何获得访问权的其它捷

径。其他包内的类不能一出现就说:“嗨,我是 Bob 的朋友。”,并且还想看到 Bob

protected,包访问权限和 private 成员。取得对某成员的访问权的唯一途径是:

 

1. 使该成员成为 public。于是,无论是谁,无论在哪里,都可以访问该成员。

2. 通过不加访问权限修饰词并将其他类放置于同一个包内的方式给成员赋予包访问

权。于是包内的其他类也就可以访问该成员了。

3. 第 6 章将会介绍到继承技术,届时你将会看到继承而来的类可以与访问 public

员一样地访问protected 成员(但访问 private 成员却不行)。只有在两个类

都处于同一个包内时,它才可以访问包访问权限的成员。但现在不必担心了。

4. 提供访问器(accessor)和变异器(mutator)方法(也称作“get/set”方法),

以读取和改变数值。如你在第 4 章中看到的一样,对 OOP 而言,这是最优雅的方

式,而对 JavaBeans 来说,也是它的基本原理。


原创粉丝点击