중첩 인터페이스(Nested Interface)
- 중첩 인터페이스는 클래스의 내부에 멤버 요소로 선언된 인터페이스를 뜻합니다.
- 인터페이스를 클래스 내부에 선언하여 바깥 클래스와 긴밀한 관계를 가지는 구현 객체를 만들기 위해 사용됩니다.
- 중첩 클래스와 같이 접근 제어자를 사용하여 접근 범위를 설정할 수 있습니다.
- public: 다른 패키지에서 중첩 인터페이스 접근 가능
- (default): 같은 패키지에서만 중첩 인터페이스 접근 가능
- private: 바깥 클래스 내부에서만 중첩 인터페이스 접근 가능
- 또한 static 제어자를 통해 정적인 특성을 가지도록 설정할 수 있습니다.
- 중첩 인터페이스는 보통 안드로이드 UI 프로그램에서 이벤트를 처리할 목적으로 활용됩니다.
중첩 인터페이스 선언 방법
class OuterClass {
[public | (default) | private] [static] interface NestedInterface {
// 상수 필드
// 추상 메서드
// 디폴트 메서드
// 정적 메서드
}
}
중첩 인터페이스 사용 예시
// 버튼 클래스
public class Button {
// 중첩 인터페이스 부분
public static interface ClickListener {
// 추상 메서드
void onClick();
}
// 필드
private ClickListener clickListener;
// 메서드
public void setClickListener(ClickListener clickListener) {
this.clickListener = clickListener;
}
public void click() {
this.clickListener.onClick();
}
}
// 실행 클래스
public class ButtonExample {
public static void main(String[] args) {
// OK 버튼 객체 생성
Button btnOk = new Button();
// OK 버튼 클랙 이벤트를 처리하는 ClickListener 구현 클래스
class OkListener implements Button.ClickListener {
@Override
public void onClick() {
System.out.println("Ok 버튼을 클릭했습니다.");
}
}
// Ok 버튼 객체에 ClickListener 구현 객체 주입
bntOk.setClickListener(new OkListener());
// Ok 버튼 클릭
btnOk.click();
// Cancel 버튼 객체 생성
Button btnCancel = new Button();
// Cancel 버튼 클릭 이벤트를 처리할 ClickListener 구현 클래스
class CancelListener implements Button.ClickListener {
@Override
public void onClick() {
System.out.println("Cancel 버튼을 클릭했습니다.");
}
}
// Cancel 버튼 객체에 ClickListener 구현 객체 주입
btnCancel.setClickListener(new CancelListener());
// Cancel 버튼 클릭하기
btnCancel.Click();
}
}
'Programing Language > Java' 카테고리의 다른 글
[Java] 예외 처리(Exception Handling) (0) | 2022.07.13 |
---|---|
[Java] 프로그램 에러와 예외(Program Error & Exception) (0) | 2022.07.12 |
[Java] 익명 클래스(Anonymous Class) (0) | 2022.07.10 |
[Java] 중첩 클래스의 분류(Separation of Nested Class) (0) | 2022.07.09 |
[Java] 중첩 클래스(Nested Class) (0) | 2022.07.08 |