受保护成员的范围
我准备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
由于它使用默认修饰符,因此如果满足下列条件之一,则它具有访问权限:
- 是class级本身的一部分(不!)
- 是类本身的一部分(不是!)
因此它不符合标准,因此您无法访问。