안드로이드 개발 질문/답변
(글 수 45,052)
어떤 클래스에서 private 접근 한정자를 이용해서 멤버로 선언한 변수 a가 있다고 치면,
이 변수는 Button의 클릭 리스너의 구현 부분에서 접근이 안되야 정상 아닌가요?
제 생각엔 위와같은 코드는 에러가 나야 정상인데, 막상 해보니 이런 접근이 가능 하던데 혹시 이에 대해서 설명 좀 해주실분? ^^;
이 변수는 Button의 클릭 리스너의 구현 부분에서 접근이 안되야 정상 아닌가요?
public class AAA { private int a; public AAA() { Button button = 생략(^^;;) button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { a = 1; } }
제 생각엔 위와같은 코드는 에러가 나야 정상인데, 막상 해보니 이런 접근이 가능 하던데 혹시 이에 대해서 설명 좀 해주실분? ^^;
2010.06.16 08:53:25
setOnClickListener() method에 인자로 생성된 녀석은 익명, 이너 클래스이긴 하지만, 역시 AAA Class 안에서 선언된 녀석이죠.
AAA의 private 멤버에 접근이 가능한게 맞습니다. 같은 AAA Class안에서 선언된 녀석들이니깐요.
선후님 말씀대로, Inner Class안에서 this는 자기 자신이므로, AAA가 아니라, 이너클래스 자기 자신을 가르키지요.