3

我有以下用 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方法的内部方法调用?为什么会这样,我错过了什么吗?Handle和之间的唯一关系User是它们是implement相同的X

4

3 回答 3

6

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

有关更多详细信息,请参阅内容。

于 2011-07-06T06:06:06.567 回答
2

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

于 2011-07-06T06:06:13.977 回答
1

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

于 2011-07-06T06:11:00.430 回答