为什么protected成为不同子类包中其他类的私有对象,但仍在同一父类包中受保护。

package a;
class A
{
  protected a;
}

package b;
class B extends A
{
  B()
{
  System.out.println(a);
}
}

class C
{
  C()
  {
    System.out.println(new B().a);//error
   }

}

最佳答案

因为该软件包是不相关类的protected访问修饰符的“可见性限制”。在此处查看文档:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html


  protected修饰符指定只能访问该成员
  在自己的软件包中(与package-private一样),此外,通过
  另一个包中其类的子类。


从上面可以看到,无论是子类,还是同一个包,您都不会。

关于java - 为什么保护对其他子类包中的其他类私有(private),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11344962/

10-11 01:06