2011-07-06 5 views
3
내가 코드 아래 이클립스 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() 생각은 익명의 내부 class 방법의 내부 방법에서 여전히 호출입니다, protected입니까? 왜 그런 일이 일어나고있는 것일까? HandleUser 사이의 유일한 관계는 implement ing same X입니다.

답변

6

두 클래스가 모두 같은 패키지에 있으면 보호 된 메서드를 호출 할 수 있습니다.

자세한 내용은 this을 참조하십시오.

2

호출 클래스가 동일한 패키지에 있으면 보호 된 메서드를 호출 할 수 있습니다. 그것이 당신이 원하는 것이 아니라면, 당신은 당신의 방법을 비공개로 만들어야합니다.

1

동일한 패키지의 클래스는 '관련이 없습니다'.

+0

+1 그래, 그들은 실제로 "무관"하지 않습니다. – iammilind

관련 문제