2011-07-06 16 views
3

私は、EclipseのIDEと書かれたコードの下にあります:Handle.methodHandle()protectedですが保護されていないメソッドは、関係のないクラスでどのようにアクセスできますか?

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 ? 
     } 
    } 
    } 
} 

、それは匿名の内部class方法の内側の方法からまだ呼び出し可能なのか?なぜそれが起こっている、私は何かを欠いている? HandleUserの間の唯一の関係は、それらがXと同じであるということです。

答えて

6

両方のクラスが同じパッケージ内にある場合、保護されたメソッドを呼び出すことができます。

詳細はthisを参照してください。

2

呼び出し元クラスが同じパッケージ内にある場合、保護されたメソッドを呼び出せるようになります。それがあなたの望むものではない場合は、メソッドを非公開にする必要があります。

1

同じパッケージ内のクラスは、「無関係」ではありません。

+0

+1本当に「無関係」ではありません。 – iammilind

関連する問題