为什么子类成员不受保护?



如果 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可见性授予访问权限。

最新更新