Java 类成员的访问控制符_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java 类成员的访问控制符

Java 类成员的访问控制符

 2013/10/20 22:10:56  wxl24life  程序员俱乐部  我要评论(0)
  • 摘要:今天被问了一个Java基础知识:Java类成员的访问控制符(AccessModifier)有几种?这些访问控制符之间有何区别?首先回答第一个问题。通常我们可以显示声明的访问控制符有三个:public,private和protected。但是,我们也会碰到另一种情况:在成员变量或者方法声明前面不加任何的访问控制符。通过这种方式声明的成员具有缺省访问控制(defaultaccess)属性。具有缺省访问属性的类成员的可访问性被限制在包(package)内,因而有人也称之为包可见访问控制。然后
  • 标签:Java

今天被问了一个 Java 基础知识:Java 类成员的访问控制符(Access Modifier)有几种?这些访问控制符之间有何区别?

?

首先回答第一个问题。通常我们可以显示声明的访问控制符有三个:public, private 和 protected。但是,我们也会碰到另一种情况:在成员变量或者方法声明前面不加任何的访问控制符。通过这种方式声明的成员具有缺省访问控制(default access)属性。具有缺省访问属性的类成员的可访问性被限制在包(package)内,因而有人也称之为包可见访问控制。

?

然后,关于四种访问控制属性的对比,可以直接引用 SO 上的一张非常清晰的对比图表:

class="java" name="code">Modifier    | Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public      |  ?    |    ?    |    ?     |   ?
————————————+———————+—————————+——————————+———————
protected   |  ?    |    ?    |    ?     |   ?
————————————+———————+—————————+——————————+———————
no modifier |  ?    |    ?    |    ?     |   ?
————————————+———————+—————————+——————————+———————
private     |  ?    |    ?    |    ?     |   ?

?

这张图表可以这样解读(以 protected 为例):

proctected 访问控制符所修饰的类成员在声明该成员的类类所在的包中的所有其他类以及该类的所有子类中是可见的,而对除此之外的其他类是不可见的。

?

需要注意的一点是,缺省访问控制的类成员只是包内可见,如果其子类也同一个包内,那么也是子类可见的。但是,由于对包外声明的子类是不可见的,所以有上图标中的第4行第4列的?。

?

monospace;">另外,值得领会的另一个问题是:在实际编程中应该如何选择使用哪一种访问控制符?SO上得票数第二的回答也是值得读一下的。总的来说,访问控制符设计的初衷是针对 OO 中的封装性 - 应该尽量将信息隐藏。类成员的访问权限放的越开,日后对于该类成员的任何改变就越要谨慎,因为这个类成员可能被很多人使用。如何选择,应该充分考虑类成员的最终用途。

?

上一篇: USB数据共享、联机线、联网线编程接口(API) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名