익명클래스, anonymous class
class Test {
interface Banana {
void f1();
}
}
public class Day {
public static void main(String[] args) {
Test.Banana ban=new Test.Banana() {
@Override
public void f1() {
System.out.println("Im anonymous 1, name ban");
}
};
new Test.Banana() {
@Override
public void f1() {
System.out.println("Im anonymous but my method f1() is going to be disposed.");
}
}.f1(); // f1()이 바로 호출되고 버려지는 일회용 익명클래스
ban=new Test.Banana() {
@Override
public void f1() {
System.out.println("Im anonymous but modified.");
}
};
ban.f1();
}
}
abstract class Test {
protected String a;
Test(String a) {
this.a = a;
System.out.println("Test 생성자");
}
abstract void te(String string);
}
class Out {
public void tet(Test obj) {
obj.te("jo"); // 오버라이딩 된 te 실행!!
System.out.println("debug2");
}
}
public class Day {
public static void main(String[] args) {
Out out = new Out();
out.tet(new Test("eunbi") {
@Override
public void te(String str) {
System.out.println(str+a);
}
});
}
}