我在下面用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
。
答案 0 :(得分:6)
如果两个类都在同一个包中,则可以调用受保护的方法。
有关详细信息,请参阅this。
答案 1 :(得分:2)
如果调用类在同一个包中,它将能够调用受保护的方法。如果那不是您想要的,那么您应该将您的方法设为私有。
答案 2 :(得分:1)
同一个包中的类不是“不相关的”。