안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
클래스의 멤버로 선언된 인터페이스.
class A {
interface I {
void method();
}
}
예) 버튼을 클릭했을 때 이벤트를 처리하고 싶다고 하고, 아무 객체나 받으면 안 되고, 버튼 내부에서 선언된 중첩 인터페이스를 구현한 객체만 받아야 한다고 한다면, 아래와 같이 Button클래스를 선언하면 됩니다.
public class Button {
OnClickListener listener;
void setOnClickListener(OnClickListener listener) {
this.listener = listener;
}
void touch() {
listener.onClick();
}
interface OnClickListener {
void onClick();
}
}
아래 예제는 버튼을 클릭했을 때 두 가지 방법으로 이벤트를 처리하는 방법을 보여주는 예제입니다.
어떤 구현 객체를 생성해서 Button 객체의 setOnClickListener() 메서드를 세팅하느냐에 따라서 Button의 touch() 메서드의 실행 결과가 달라집니다.
중첩 인터페이스
public class Button {
OnClickListener listener;
void setOnClickListener(OnClickListener listener) {
this.listener = listener;
}
void touch() {
listener.onClick();
}
interface OnClickListener {
void onClick();
}
}
구현 클래스1
public class CallListener implements Button.OnClickListener {
Button클래스의 중첩인터페이스
@Override
public void onClick() {
System.out.println("전화를 겁니다.");
}
}
구현 클래스2
public class MessageListener implements Button.OnClickListener {
@Override
public void onClick() {
System.out.println("메시지를 보냅니다.");
}
}
실행 클래스
public class ButtonExample {
public static void main(String[] args) {
Button btn = new Button();
btn.setOnClickListener(new CallListener());
btn.touch();
btn.setOnClickListener(new MessageListener());
btn.touch();
}
}
'자바' 카테고리의 다른 글
JAVA 자바 익명 구현 객체 생성 (0) | 2017.03.13 |
---|---|
JAVA 자바 : 익명 자식 객체 생성 (0) | 2017.03.13 |
JAVA 자바 중첩 클래스: 중첩 클래스의 접근 제한 - 로컬 클래스에서 사용 제한 / 중첩 클래스에서 바깥 클래스 참조 얻기 (0) | 2017.03.13 |
JAVA 자바 중첩 클래스 : 중첩 클래스의 접근 제한 - 바깥 필드와 메서드에서 사용 제한, 멤버 클래스에서 사용 제한 (0) | 2017.03.13 |
JAVA 자바 중첩 클래스: 인스턴스 멤버 클래스, 정적 멤버 클래스, 로컬 클래스 (0) | 2017.03.13 |