为什么在不相关的类中可以访问受保护的方法?

时间:2011-07-06 06:02:09

标签: java eclipse compilation protected access-specifier

我在下面用Eclipse ide编写代码:

public interface X
{
  final public static int SOME_CONST = 0;
}
public class Handle implements X
{
  protected void methodHandle () { }
 //...
}

public class User implements X
{
  Handle handle = new Handle();
  private void methodUser ()
  {
    Y y = new Y()  // anonymous inner class
    {
      public void methodY ()
      {
        handle.methodHandle (); // <--- why this is NOT giving error ?
      }
    }
  }
}

即使Handle.methodHandle ()protected,它仍然可以从匿名内部class方法的内部方法调用吗?它为什么会发生,我错过了什么? HandleUser之间的唯一关系是它们implement相同X

3 个答案:

答案 0 :(得分:6)

如果两个类都在同一个包中,则可以调用受保护的方法。

有关详细信息,请参阅this

答案 1 :(得分:2)

如果调用类在同一个包中,它将能够调用受保护的方法。如果那不是您想要的,那么您应该将您的方法设为私有。

答案 2 :(得分:1)

同一个包中的类不是“不相关的”。