자바

JAVA 자바 중첩 인터페이스 Interface

알통몬_ 2017. 3. 13. 10:50
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

중첩 인터페이스

 클래스의 멤버로 선언된 인터페이스. 

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();

}

 

}

반응형