JAVA学习脚印8: 类及其成员的访问权限

JAVA学习脚印8: 类及其成员的访问权限

本节介绍java语言的访问权限问题。

1.  java中的访问控制

最高级别:对于类,外部类只可以使用public,pakage-private(即不带任何修饰符的情况)修饰;嵌套类(nested class) 可以使用private, public, protected,package-private 。

成员级别: 对于成员,可以使用 private, public, protected,package-private 。

四种修饰符对应的访问权限为:

  • private     仅对本类可见。
  • public      对所有的类可见
  • protected   对本包及所有子类可见
  • package-private    即不带任何修饰符时的默认权限,仅对包可见。

private是最严格限制的访问修饰符,它给对象提供了很好的封装性,对外界隐藏了对象的数据。

Public 是最宽松的访问限制,使用它修饰的类及成员对外界都可见。

protected访问权限可以用于解决,父类只想让子类继承其成员而不对其他类可见的情形。

下面是来自:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html,关于访问权限的总结表:



从上表来看,第二列表明一个类总是可以访问自己的成员;第三列表明除了private修饰以外,其余的都对本包中的类可见;第四列表明,包外的子类的访问权限;第五列表明是否对所有的类都可见。

2. 子类从父类继承成员的访问权限

子类继承父类的成员后,不可以降低父类的访问权限。例如如下代码:

public class SuperClass {
	protected void testMethod() {}
}
class SubClass extends SuperClass {
	private void testMethod() {}
}

将产生如下错误提示:

SuperClass.java:8: error: testMethod() in SubClass cannot override testMethod() in SuperClass private void testMethod() {} attempting to assign weaker access privileges;

同时开发环境提示错误信息:

Cannot reduce the visibility of the inherited method from SuperClass 

为此有如下有求:

父类中的public方法,在子类中只能是public;

父类中的protected方法在子类中只能是protected或者public。

也可以参考: http://www.tutorialspoint.com/java/java_access_modifiers.htm



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值