package education.innerClass;
public class RemoteControl {
void turnOn(); // public abstract void turnOn();
void turnOff(); // public abstract void turnOff();
}
package education.innerClass;
public class Anonymous2 {
//anonymous class
//필드 초기값으로 대입
RemoteControl field = new RemoteControl() {
@Override
void turnOn() {
System.out.println("TV를 켭니다.");
}
@Override
void turnOff() {
System.out.println("TV를 끕니다.");
}
};
void method1() {
RemoteControl localVar = new RemoteControl() {
@Override
void turnOn() {
System.out.println("Audio를 켭니다.");
}
@Override
void turnOff() {
System.out.println("Audio를 끕니다.");
}
};
//로컬변수 사용
localVar.turnOff();
}
void method2(RemoteControl rc) {
rc.turnOff();
}
}
package education.innerClass;
public class Anonymous2_Main {
public static void main(String[] args) {
Anonymous2 anony = new Anonymous2();
//1. 익명 객체 필드 사용
anony.field.turnOn();
System.out.println("-----------------");
//2. 익명 객체 로컬변수 사용
anony.method1();
System.out.println("-----------------");
//3. 익명 객체 매개값 사용
anony.method2(
new RemoteControl() {
@Override
void turnOn() {
System.out.println("Smart TV를 켭니다.");
}
@Override
void turnOff() {
System.out.println("Smart TV를 끕니다.");
}
}
);
}
}
댓글