🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### [包访问权限](https://lingcoder.gitee.io/onjava8/#/book/07-Implementation-Hiding?id=%e5%8c%85%e8%ae%bf%e9%97%ae%e6%9d%83%e9%99%90) 本章之前的所有示例要么使用**public**访问修饰符,要么就没使用修饰符(*默认访问权限(default access)*)。默认访问权限没有关键字,通常被称为*包访问权限(package access)*(有时也称为**friendly**)。这意味着当前包中的所有其他类都可以访问那个成员。对于这个包之外的类,这个成员看上去是**private**的。由于一个编译单元(即一个文件)只能隶属于一个包,所以通过包访问权限,位于同一编译单元中的所有类彼此之间都是可访问的。 包访问权限可以把相关类聚到一个包下,以便它们能轻易地相互访问。包里的类赋予了它们包访问权限的成员相互访问的权限,所以你"拥有”了包内的程序代码。只能通过你所拥有的代码去访问你所拥有的其他代码,这样规定很有意义。构建包访问权限机制是将类聚集在包中的重要原因之一。在许多语言中,在文件中组织定义的方式是任意的,但是在 Java 中你被强制以一种合理的方式组织它们。另外,你可能会将不应该对当前包中的类具有访问权限的类排除在包外。 类控制着哪些代码有权访问自己的成员。其他包中的代码不能一上来就说"嗨,我是**Bob**的朋友!",然后想看到**Bob**的**protected**、包访问权限和**private**成员。取得对成员的访问权的唯一方式是: 1. 使成员成为**public**。那么无论是谁,无论在哪,都可以访问它。 2. 赋予成员默认包访问权限,不用加任何访问修饰符,然后将其他类放在相同的包内。这样,其他类就可以访问该成员。 3. 在"复用"这一章你将看到,继承的类既可以访问**public**成员,也可以访问**protected**成员(但不能访问**private**成员)。只有当两个类处于同一个包内,它才可以访问包访问权限的成员。但现在不用担心继承和**protected**。 4. 提供访问器(accessor)和修改器(mutator)方法(有时也称为"get/set" 方法),从而读取和改变值。