BACK/JAVA

[JAVA] 인터페이스를 이용한 이벤트 처리 기능

연듀 2022. 7. 21. 14:09

 

 

class Button{
    OnClickListener ocl; // ocl 필드는 OnClickListener 인터페이스의 타입
    void setOnClickListener(OnClickListener ocl){ // 인터페이스 객체를 입력매개변수로 넘겨받음
        this.ocl=ocl; // 필드를 초기화
    }
    interface OnClickListener {
        public abstract void onClick();
    }

    void onClick(){
        ocl.onClick(); // 초기화된 필드 객체 내부의 onClick() 메서드를 실행
    }
}
public class ButtonApiExample {
    public static void main(String[] args) {

        Button btn1=new Button(); // 버튼 객체 생성
        btn1.setOnClickListener(new Button.OnClickListener() { // 익명 이너 클래스 활용
            @Override
            public void onClick(){ // 오버라이딩
                System.out.println("개발자1: 음악 재생");
            }
        });
        btn1.onClick(); // 버튼 객체의 click()메서드 호출


        Button btn2=new Button();
        btn2.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick() {
                System.out.println("개발자2: 네이버 접속");
            }
        });
        btn2.onClick();
    }
}

 

API는 음악을 재생하는 버튼과 네이버를 접속하는 번튼을 따로 만들어 제공하는 것이 아니라

버튼의 기능을 정의할 수 있는 인터페이스를 클래스 내부에 정의해 제공한다.

1개의 버튼 클래스로 수천 개의 기능을 수행하는 버튼을 만들 수 있는 것이다.