자바 익명 클래스 내부에서 private 멤버 변수에 접근이 되는 이유?

jz99의 이미지

interface Test {
public void test();
}

public class TestMain {
private String h = "AAA";

public static void main(String[] args) {
TestMain t = new TestMain();
}

public TestMain() {
Test t = new Test() {
public void test() {
System.out.println( h );
}
};

t.test();
}

}

위 소스를 실행하면 h값이 정상적으로 출력됩니다.
익명 클래스 내부와 바깥 클래스는 다른 영역 아닌가요?

TestMain 클래스의 private 멤버 변수에 접근이 안될 것 같은데, 접근이 되는 논리가 무엇인지 궁금합니다.
감사합니다.

익명 사용자의 이미지

Test 라는 인터페이스의 구현이 TestMain Class 안에서 실제로 구현되어지기 때문이 아닐까요? ㅋㅋ
짧은 지식으로 고민해봅니다. ㅋㅋ