3.3.3、类成员的访问控制

这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。
类成员的访问控制

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

  • 类级别 public或者package-private(非显示修饰符)
  • 成员级别 public、protected、private和package-private(非显示修饰符)

类可以声明为public的,这表示所有的类都可以访问该类。如果类没有修饰符,那么类只能被同一个包下面的其他类访问。

在成员级别,你也可以用public或者无修饰符来修饰成员,它们的含义与类级别的相同。对成员来说,有另外两种访问修饰符:private和protected。private修饰的成员表示只能在类内部访问,protected修饰的成员表示除了能在类内部访问外,还可以在类的子类中访问。

如下表格显示了不同修饰符下成员的访问级别:

修饰符ClassPackageSubClassWorld
publicYYYY
protectedYYYN
package-privateYYNN
privateYNNN

第一列(Class)是指类自身是否能访问对应修饰符修饰的成员。第二列(Package)是指同一个包下面的类是否能访问对应修饰符修饰的成员。第三列(SubClass)是指类的子类(与当前类不同包)是否能访问对应修饰符修饰的成员。第四列(World)是指所有的类是否能访问对应修饰符修饰的成员。

访问级别对你有两种影响:第一是当你想使用来自于其他源文件中的类时,比如Java平台,访问级别将决定有哪些类你可以直接使用,第二是当你在编写代码时,你需要考虑你编写类的成员变量和方法需要指定什么访问级别。

让我们看一组类,看看访问级别是如何影响可见性。下面的图显示了4个类以及它们的关系:
在这里插入图片描述
下表显示了Alpha类的成员对于可以应用于它们的每个访问修饰符在哪些类中是可见的。

修饰符AlphaBetaAlphasubGamma
publicYYYY
protectedYYYN
no-modifierYYNN
privateYNNN

选择访问等级小贴士:

如果其他程序员使用你的类,你要确保不会因为他们的误用导致错误。访问级别可以帮助你:

  • 对特定成员使用最严格的访问控制级别,尽量使用private,除非你有理由不用
  • 除了常量不要使用public字段。公共字段倾向于将你链接到特定的实现,并限制更改代码的灵活性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值