본문으로 바로가기

[Java] 중첩 인터페이스

category Backend/객체 지향 프로그래밍 2022. 4. 28. 12:08

중첩 인터페이스

public class 클래스명 {
    interface 인터페이스명 {
        ...
    }
}
  • 클래스의 멤버로 선언된 인터페이스
  • 인터페이스를 클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서입니다.
  • 주로 UI 프로그래밍에서 이벤트를 처리할 목적으로 많이 활용

 

예시

중첩 인터페이스 OnSlideListener를 가지고 있는 클래스 SlideGesture

public class SlideGesture {
    // 인터페이스 타입 필드
    OnSlideListener onSlideListener;

    // 다형성(매개 변수)
    public void setOnSlideListener(OnSlideListener onSlideListener) {
        this.onSlideListener = onSlideListener;
    }

    void slide() {
        onSlideListener.onSlide();
    }

    //==중첩 인터페이스==//
    interface OnSlideListener {
        void onSlide();
    }
}

 

구현체 UpSlideListener

public class UpSlideListener implements SlideGesture.OnSlideListener {
    @Override
    public void onSlide() {
        System.out.println("화면 잠금 해제");
    }
}

 

구현체 DownSlideListener

public class DownSlideListener implements SlideGesture.OnSlideListener {
    @Override
    public void onSlide() {
        System.out.println("화면 잠금");
    }
}

 

실행

SlideGesture slideGesture = new SlideGesture();

slideGesture.setOnSlideListener(new UpSlideListener());
slideGesture.slide(); // 화면 잠금 해제

slideGesture.setOnSlideListener(new DownSlideListener());
slideGesture.slide(); // 화면 잠금