- 다른 클래스를 상속없이 메쏘드만 재정의해서 사용할 때
public class AnonyClass_Test {
public static void main(String[] args) {
BaseClass bc = new BaseClass() {
@Override
public void display() {
System.out.println("I'm display from anonymous class.");
}
}; /* BaseClass의 생성자를 호출해서 생성자 안에서 display() 메쏘드를 재정의한다. */
bc.display(); /* 재정의한 메쏘드를 사용한다. */
bc.sayhi(); /* 재정의하지 않은 다른 메쏘드를 사용한다.*/
}
}
class BaseClass {
public void display() {
System.out.println("I'm display from BaseClass.");
}
public void sayhi() {
System.out.println("I'm sayhi from BaseClass.");
}
}
- 인터페이스를 매개로 해서 메쏘드만 재정의해서 사용할 때
public class AnonymousClass {
public static void main(String[] args) {
ActionAfterClick a = new ActionAfterClick() {
@Override
public void action() {
System.out.println("I'm action from anonymous class.");
}
};
Button p = new Button();
p.addAction(a);
Button p2 = new Button();
p2.addAction(new ActionAfterClick() {
@Override
public void action() {
System.out.println("I'm action from anonymous class for button p2");
}
});
}
}
interface ActionAfterClick {
void action();
}
class Button {
void addAction(ActionAfterClick a) {
a.action();
}
}
댓글 영역