본문 바로가기
Work & Study/JAVA (& 혼공자Java)

자바(Java) - 중첩 인터페이스

by a.k.a DUKI 2020. 11. 23.
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
반응형