如果 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 仅对父类可见而不将其移动到另一个包?
在Java中,可见性级别形成了一个完全有序的包含链。
private
成员只能从当前类中查看。
package-private
成员只能从当前包中查看,当前类是当前包的一部分。
protected
成员只能从子类或当前包中看到,因此涵盖了包私有可以看到的所有内容。
从任何地方都可以看到一个public
成员。
由于您的类 MyTest 与 Val 位于同一包中,因此protected
可见性授予访问权限。