728x90
반응형
중첩 인터페이스
클래스의 멤버로 선언된 인터페이스
해당 클래스와 긴밀한 관계를 맺는 구현클래스를 만들기 위해서 클래스 내부에서 선언한다.
class A{
//중첩 인터페이스
[static] interface I{
void method();
}
}
인스턴스 멤버 인터페이스와 정적 멤버 인터페이스 모두 가능하다.
예시1) 중첩 인터페이스
public class Button {
//인터페이스 타입 필드
OnClickListener listener;
//매개 변수의 다형성
void setOnClickListener(OnClickListener listener) {
this.listener = listener;
}
void click() {
listener.onClick(); //ㄱ현 객체의 onClick()메소드 호출
}
//중첩 인터페이스
static interface OnClickListener{
void onClick();
}
}
구현 클래스
public class CallListener implements Button.OnClickListener{
@Override
public void onClick() {
System.out.println("전화를 한다.");
}
}
구현 클래스
public class MsgListener implements Button.OnClickListener {
@Override
public void onClick() {
System.out.println("메세지 보낸다.");
}
}
버튼 이벤트 처리
public class ButtonEx {
public static void main(String[] args) {
Button btn = new Button();
btn.setOnClickListener(new CallListener());
btn.click();
btn.setOnClickListener(new MsgListener());
btn.click();
}
}
※용어 정리
-
중첩 클래스: 클래스 내부에 선언한 클래스이다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있고, 외부에는 불필요한 관계클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다.
-
멤버 클래스: 클래스의 멤버로서 선언되는 중첩 클래스를 말한다. 멤버 클래스는 바깥 객체의 필요 여부에 따라 인스턴스 멤버 클래스와 정적 멤버 클래스로 구분된다.
-
로컬 클래스: 생성자 또는 메소드 블록 내부에 선언된 중첩 클래스를 말한다.
-
중첩 인터페이스: 클래스의 멤버로 선언된 인터페이스 이다. 중첩 인터페이스는 인스턴스 멤버 인터페이스와 정적 멤버 인터페이스 모두 가능하다. 주로 정적 멤버 인터페이스를 많이 사용하는데 UI프로그래밍에서 이벤트를 처리할 목적으로 많이 활용 된다.
본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
728x90
반응형
'Work & Study > JAVA (& 혼공자Java)' 카테고리의 다른 글
자바(Java) - 익명 객체2 (익명 구현 객체 생성) (0) | 2020.11.24 |
---|---|
자바(Java) - 익명 객체1 (익명 자식 객체 생성) (0) | 2020.11.24 |
자바(Java) - 중첩 클래스의 접근 제한 (0) | 2020.11.23 |
자바(Java) - 중첩 클래스와 중첩 인터페이스 (0) | 2020.11.23 |
자바(Java) - 타입 변환과 다형성 (0) | 2020.11.17 |