受保护成员的范围

我准备SCJP,我也知道受保护的成员范围在包内以及其他包中,只有inheritance才有可能。

例如:我有三个类作为Parentclass Childclass Friendclass

package x.parent; class Parentclass{ protected int x=10; ............... } package x.child; class Childlass extends Parentclass{ super.x=20; ............... } package x.child; import x.parent.Parentclass; class Friendclass{ Parentclass pc = new Parentclass(); pc.x=30; ............... } 

这背后的原因是什么,在Friendclass中,成员x不接受为其赋值,在不是Childclass的情况下表现为私有成员。

您甚至无法访问Parentclass.x中的Childclass因为x具有默认可见性(不受保护)。 请参阅http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

编辑:

x.child.Friendclass 不在同一个包中。 x.child.Friendclass x.parent.Parentclass inheritance

由于TotalFrickinRockstarFromMars的摘要状态和Java访问控制文档也说明,这意味着不允许Friendclass访问字段x

有四种访问修饰符

 private - just this class no modifier - just this class or this package (NOT subclass) protected - just this class, this package, or subclass public - everyone and their cousin 

由于它使用默认修饰符,因此如果满足下列条件之一,则它具有访问权限:

  1. 是class级本身的一部分(不!)
  2. 是类本身的一部分(不是!)

因此它不符合标准,因此您无法访问。