protected使用微妙之处

本文深入解析Java中的访问控制规则,特别是protected修饰符的行为特点。详细介绍了不同情况下的访问权限,包括同包和不同包下的子类及普通类如何访问成员变量和方法。总结了四种访问修饰符的作用范围。

1.protected受访问保护规则是很微妙的。虽然protected域对所有子类都可见。但是有一点很重要,子类只能在自己的作用范围内访问自己继承的那个父类protected域,而无法到访问别的子类(同父类的亲兄弟)所继承的protected域。这就是为什么我们在用clone方法的时候不能简单的直接将对象Object.clone()出来的原因了。(必须实现Cloneable 接口,并重写clone方法,并将访问控制符改为public,这样任何方法中克隆对象。

 

2.完整的访问规则:

 

 

  • 公共属性总能访问
  • 同一包的子类,可以任意使用
  • 同一个包的正常类,可以直接用他的实例进行访问
  • 不同包的正常类,无法访问任何属性和方法
  • 不同包的子类,不能使用父类实例的属性和方法
  • 不同包的子类,不能使用其它包的子类实例的属性和方法
  • 不同包的子类,可以直接使用父类的属性和方法
  • 总之,不同包的子类就规规矩矩的在自己的代码里用父类的属性就行了。其它的使用都是不允许的。

 3.访问修饰的总结

      Here is a summary of the four access modifiers in Java that control visibility:

  • Visible to the class only (private).
  • Visible to the world (public).
  • Visible to the package and all subclasses (protected).
  • Visible to the package—the (unfortunate) default. No modifiers are needed.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值