728x90
문제
아래 3개의 클래스를 작성하고,
실행결과를 출력하시오! (익명 구현 객체)
Button, Window, WindowExample
Button(클래스)
멤버변수
OnClickListener(중첩 인터페이스) listener
멤버함수
void setOnClickListener(OnClickListener) *setter
void touch() * 중첩인터페이스 메서드 호출
interface OnClickListener { void OnClick() };
Window(클래스)
멤버변수
Button btn1
Button btn2
WindowExample(실행클래스)
실행화면
*Window window = new Window();
???
*window.btn1.touch();
???
*window.btn2.touch();
결과
Button1 누름: 전화를 겁니다.
Button2 누름: 메세지를 보냅니다.
코드
class Button {
OnClickListener listener;
void setOnClickListener(OnClickListener listener) {
this.listener = listener;
}
void touch() {
listener.OnClick();
}
interface OnClickListener {
void OnClick();
}
}
class Window {
Button btn1;
Button btn2;
}
class WindowExample {
public static void main(String[] args) {
Window window = new Window();
window.btn1 = new Button(); //new Button을 해서 객체들을 만들어야 해야 안에 함수들을 다 쓸 수 있다.
window.btn1.setOnClickListener(new Button.OnClickListener() {
@Override
public void OnClick() {
// TODO Auto-generated method stub
System.out.println("Button1 누름 : 전화를 겁니다.");
}
});
window.btn1.touch();
window.btn2 = new Button();
window.btn2.setOnClickListener(new Button.OnClickListener() {
@Override
public void OnClick() {
// TODO Auto-generated method stub
System.out.println("Button2 누름 : 메세지를 보냅니다.");
}
});
window.btn2.touch();
}
}
알게 된 것
window.btn1.setOnClickListener(new Button.OnClickListener() {
이 구문을
window.btn1.setOnClickListener(window.btn1.OnClickListener() {
이렇게 접근을 해도 되지 않을까란 생각을 했는데 내부 인터페이스 즉 중첩 인터페이스는 메서드처럼 이렇게 쓰는 것이 불가능했다.
728x90
'Java' 카테고리의 다른 글
| [Java] 제네릭 클래스 예제 (검토 필요) (0) | 2023.09.02 |
|---|---|
| [Java] 컬렉션과 제네릭 예제 (Vector,ArrayList,HashMap) (0) | 2023.09.02 |
| [Java] (interface 익명 구현 객체) (19-2) (0) | 2023.08.31 |
| [Java] (interface 익명 구현 객체) (19-1) (0) | 2023.08.31 |
| [Java] (interface 익명 구현 객체) (0) | 2023.08.31 |