2011-07-06 39 views
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方法的内部方法?为什么会发生,我错过了什么? HandleUser之间的唯一关系是它们是implement相同的X

回答

6

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

有关更多详细信息,请参见this

2

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

1

同一包中的类不是'不相关的'。

+0

+1是的,他们确实不是“不相关的”。 – iammilind

相关问题