β

Java 中的访问修饰符

Aptusource.orgAptusource.org 344 阅读

访问级别修饰符决定了其它类是否有权访问当前类的属性和方法。有两种级别的访问控制:

类(class)可以声明 public 修饰符,表示这个类对所有类都可见。也可以不带修饰符(默认,也称为包内私有),表示这个类只对类所在包中的其它类可见。

成员(方法和属性)级别也可以使用 public 和不带修饰符,它们的含义与添加在在 class 上一致。对于成员来说,还有两个访问修饰符:private 和 protected。 private 修饰的成员只能在当前类中被访问。protected 修饰的成员可以被当前类所在包中的其它类访问(与默认修饰符一致),还可以被其它包中当前类的子类访问。

下表展示了各个修饰符的访问限制:

访问修饰符 相同类中 相同包中 子类中 任何类中
public Y Y Y Y
protected Y Y Y N
无修饰符(包内私有) Y Y N N
private Y N N N

上表的第一列展示了各种访问修饰符,第二列展示了在本类中是否有访问成员的权限,第三列展示了在本包中是否有访问成员的权限,第四列展示了在子类中是否有访问成员的权限,第五列展示了在任何地方是否有访问成员的权限。

访问修饰符以两种方式影响你的编码。第一,当你需要调用其它地方的类中的成员的时候,比如调用 Java API 中的成员,访问修饰符决定了哪些成员可以在你自己编写的类中调用。第二,当你编写自己的类的时候,需要为每个成员变量和方法设置访问修饰符,以决定方法和属性的访问权限。

我们来看一个例子,下图展示了一组类,关联关系如图所示:

99

下表展示了 Alpha 类中的成员在各种访问修饰符的修饰下,在各个类中的访问权限:

访问修饰符 Alpha Beta Alphasub Gamma
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N

选择正确的访问权限小提示:

如果有其它程序需要调用你的代码,那么为了避免代码被滥用,你需要设置合适的访问权限。

作者:Aptusource.orgAptusource.org
最好的 Java 技术博客
原文地址:Java 中的访问修饰符, 感谢原作者分享。
JSP Blog Blog

发表评论