如果MyTest不是Val的父类,为什么可以访问v.v?
public class MyTest
{
public static void main (String args [])
{
ValX v = new ValX ();
System.out.println ("A: " + v.v); // is working, why?
}
}
public class ValX extends Val
{
}
public class Val
{
protected float v = 11;
}
编辑
我了解了包装内受保护物品的可见性。那就是原因。谢谢!
有没有一种方法可以使v仅对父类可见,而无需将其移动到另一个包中?
答案 0 :(得分:2)
在Java中,可见性级别形成了一个完全有序的包容链。
private
成员只能在当前类中看到。
package-private
成员只能从当前包(当前类是其中的一部分)中看到。
protected
成员只能从子类或当前软件包中看到,从而涵盖了package-private可以看到的所有内容。
随处可见public
成员。
由于您的MyTest类与Val位于同一包中,因此protected
可见性将授予访问权限。