如果根本不指定访问指示符就象本章之前的所有例子那样这时会出现什么情况呢?默认的访问没有关键字但它通常称为友好(Friendly)访问这意味着当前包内的其他所有类都能访问友好的成员但对包外的所有类来说这些成员却是私有(Private)的外界不得访问由于一个编译单元(一个文件)只能从属于单个包所以单个编译单元内的所有类相互间都是自动友好的因此我们也说友好元素拥有包访问权限 友好访问允许我们将相关的类都组合到一个包里使它们相互间方便地进行沟通将类组合到一个包内以后(这样便允许友好成员的相互访问亦即让它们交朋友)我们便拥有了那个包内的代码只有我们已经拥有的代码才能友好地访问自己拥有的其他代码我们可认为友好访问使类在一个包内的组合显得有意义或者说前者是后者的原因在许多语言中我们在文件内组织定义的方式往往显得有些牵强但在Java中却强制用一种颇有意义的形式进行组织除此以外我们有时可能想排除一些类不想让它们访问当前包内定义的类 对于任何关系一个非常重要的问题是谁能访问我们的私有或private代码类控制着哪些代码能够访问自己的成员没有任何秘诀可以闯入另一个包内推荐可以声明一个新类然后说嗨我是Bob的朋友!并指望看到Bob的protected(受到保护的)友好的以及private(私有)的成员为获得对一个访问权限唯一的方法就是 () 使成员成为public(公共的)这样所有人从任何地方都可以访问它 () 变成一个友好成员方法是捨弃所有访问指示符并将其类置于相同的包内这样一来其他类就可以访问成员 () 正如以后引入继承概念后大家会知道的那样一个继承的类既可以访问一个protected成员也可以访问一个public成员(但不可访问private成员)只有在两个类位于相同的包内时它才可以访问友好成员但现在不必关心这方面的问题 () 提供访问器/变化器方法(亦称为获取/设置方法)以便读取和修改值这是OOP环境中最正规的一种方法也是Java Beans的基础 |