文档

Java™教程
隐藏目录
控制类成员的访问权限
路径:学习Java语言
课程:类和对象
章节:更多关于类

控制类成员的访问权限

访问级别修饰符决定其他类是否可以使用特定的字段或调用特定的方法。有两个级别的访问控制:

一个类可以用修饰符public声明,这样该类就对所有类都可见。如果一个类没有修饰符(默认情况下,也称为包私有),它只在自己的包内可见(包是一组相关类的命名组 - 您将在后面的课程中了解到它们)。

在成员级别,您还可以像顶级类一样使用public修饰符或没有修饰符(包私有),并且具有相同的含义。对于成员,还有两个额外的访问修饰符:privateprotectedprivate修饰符指定该成员只能在其自己的类中访问。 protected修饰符指定该成员只能在其自己的包内(与包私有相同)访问,并且可以由另一个包中的其类的子类访问。

下表显示了每个修饰符允许的成员访问权限。

访问级别
修饰符 子类 全局
public
protected
无修饰符
private

第一列数据指示类本身是否具有对访问级别定义的成员的访问权限。如您所见,类总是可以访问其自己的成员。第二列指示与类相同包中的类(无论其父级如何)是否可以访问成员。第三列指示在该包之外声明的类的子类是否可以访问成员。第四列指示所有类是否可以访问成员。

访问级别以两种方式影响您。首先,当您使用来自其他源(例如Java平台中的类)的类时,访问级别确定您自己的类可以使用这些类的哪些成员。其次,当您编写一个类时,您需要决定类中每个成员变量和每个方法的访问级别。

让我们看一下一组类,并了解访问级别如何影响可见性。下图显示了此示例中的四个类及其之间的关系。

用于说明访问级别的示例的类和包

用于说明访问级别的示例的类和包

下表显示了应用于Alpha类的每个访问修饰符的成员的可见性。

可见性
修饰符 Alpha Beta Alphasub Gamma
public
protected
无修饰符
private

选择访问级别的提示: 

如果其他程序员使用您的类,您希望确保不会发生错误的错误。访问级别可以帮助您做到这一点。

  • 对于特定成员,使用最严格的访问级别。除非有充分的理由,否则使用private
  • 除了常量外,避免使用public字段。(教程中的许多示例使用public字段。这可能有助于简明地说明一些要点,但不推荐用于生产代码。)公共字段倾向于将您与特定实现关联起来,并限制您更改代码的灵活性。


上一页: 使用 this 关键字
下一页: 理解类成员