class Button{
OnClickListener ocl; // ocl 필드는 OnClickListener 인터페이스의 타입
void setOnClickListener(OnClickListener ocl){ // 인터페이스 객체를 입력매개변수로 넘겨받음
this.ocl=ocl; // 필드를 초기화
}
interface OnClickListener {
public abstract void onClick();
}
void onClick(){
ocl.onClick(); // 초기화된 필드 객체 내부의 onClick() 메서드를 실행
}
}
public class ButtonApiExample {
public static void main(String[] args) {
Button btn1=new Button(); // 버튼 객체 생성
btn1.setOnClickListener(new Button.OnClickListener() { // 익명 이너 클래스 활용
@Override
public void onClick(){ // 오버라이딩
System.out.println("개발자1: 음악 재생");
}
});
btn1.onClick(); // 버튼 객체의 click()메서드 호출
Button btn2=new Button();
btn2.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick() {
System.out.println("개발자2: 네이버 접속");
}
});
btn2.onClick();
}
}
API는 음악을 재생하는 버튼과 네이버를 접속하는 번튼을 따로 만들어 제공하는 것이 아니라
버튼의 기능을 정의할 수 있는 인터페이스를 클래스 내부에 정의해 제공한다.
1개의 버튼 클래스로 수천 개의 기능을 수행하는 버튼을 만들 수 있는 것이다.
'BACK > JAVA' 카테고리의 다른 글
[JAVA] 이너 클래스(인스턴스, 정적, 지역) (0) | 2022.07.28 |
---|---|
[JAVA] 이너 인터페이스 (0) | 2022.07.28 |
[JAVA] 인터페이스, 디폴트 메서드 (0) | 2022.07.28 |
[JAVA] charAt(i) -'0' 사용 이유 (0) | 2022.07.27 |
[JAVA] 문자/숫자를 아스키코드로 변환 (0) | 2022.07.17 |