210818_익명내부클래스
(예제)
//클래스 선언과 객체생성을 동시에 하는 이름없는 클래스(일회용)
//이벤트 발생시 생성했다가 끝나면 메모리에서 제거됨(메모리 관리 효율적)
abstract class AbstEx{ //추상메서드
abstract public void show();
}
class OuterEx{ //외부클래스
//익명내부클래스
AbstEx ab=new AbstEx() {
@Override
public void show() {
System.out.println("익명내부클래스");
}
};
}
public class AnonyInnerEx05 {
public static void main(String[] args) {
OuterEx ex=new OuterEx();
ex.ab.show(); //외부클래스참조변수명.익명내부참조변수명.메서드명
}
}
//결과
익명내부클래스
~~~~~~~~~~~~~~~~~~~
(예제)
abstract class AbstEx1{
abstract public void writeA();
abstract public void writeB();
}
class Abst{
//익명내부클래스
AbstEx1 abstEx1=new AbstEx1() {
@Override
public void writeB() {
System.out.println("B 출력");
}
@Override
public void writeA() {
System.out.println("A 출력");
}
};
}
public class AnonyInnerEx06 {
public static void main(String[] args) {
Abst ab=new Abst();
ab.abstEx1.writeA();
ab.abstEx1.writeB();
}
}
//결과
A 출력
B 출력