반응형
package nesting_interface_class.nesting_interface;
public class Button {
OnClickListener listener; // 인터페이스 타입 필드
void setOnClickListner(OnClickListener listener) {
this.listener = listener;
}
void touch() {
listener.onClick();
}
interface OnClickListener{ // 중첩 인터페이스
void onClick();
}
}
package nesting_interface_class.nesting_interface;
public class CallListener implements Button.OnClickListener{
@Override
public void onClick() {
System.out.println("전화를 겁니다.");
}
}
package nesting_interface_class.nesting_interface;
public class MessageListener implements Button.OnClickListener{
@Override
public void onClick() {
System.out.println("메시지를 보냅니다.");
}
}
package nesting_interface_class.nesting_interface;
public class ButtonExample {
public static void main(String[] args) {
Button btn = new Button();
btn.setOnClickListner(new CallListener());
btn.touch();
btn.setOnClickListner(new MessageListener());
btn.touch();
}
}
클래스 내부안에 선언한 인터페이스
주로 UI프로그래밍에서 이벤트 처리할 목적으로 사용 됩니다.
Button 이라는 클래스 안에 OnClickListener라는 인터페이스가 있고 무조건 구현해야하는 onClick 메소드가 있습니다.
void touch() 와 void setOnClickListener는 listener라고 선언한 인터페이스 타입 필드에 값이 들어갔을 때
사용할 메소드입니다.
btn.setOnClickListner(new CallListener());
btn.setOnClickListner(new MessageListener());
이렇게 인터페이스를 상속받은 클래스를 넣는 것입니다. 그러면 각각 클래스에서 구현한 interface부분 메소드가
다르게 출력이 되는 것입니다.
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 멀티스레드[Multi-Thread] (Runnable) (0) | 2021.08.04 |
---|---|
[Java] 자바 Throw , Throws 예외 처리 (0) | 2021.08.04 |
[Java] 자바 중첩 클래스, 로컬 클래스 (Class) (0) | 2021.08.02 |
[Java] 자바 Try Catch (예외 처리) (0) | 2021.07.25 |
[Java] 자바 정렬(Sort) (Comparable vs Comparator) (0) | 2021.07.10 |