익명 클래스 (Anonymous Class)

안드로이드 프로그래밍을 하다가 이벤트 리스너 매개변수로 익명 클래스를 넘기는 부분을 보고 헷갈려서 정리해둔다.


익명 클래스는 1회용 자식 클래스다. 예를 들어 다음의 클래스가 있다고 가정하자.

public class Person {
	void whoAmI() {
    	System.out.println("Person 객체");
    }
}

 

이제 위의 클래스를 상속받아 HongGilDong이라는 자식 클래스를 만들고 싶다면 상속받아 사용하면된다.

public class HongGilDong {
    @Override
    public void whoAmI() {
        System.out.println("HongGilDong 객체");
    }
}

 

근데 만약 Person 클래스를 상속받아 사용해야할 자식 클래스가 홍길동뿐만 아니라, 철수, 영희, 앨리슨 ... 등등 여러 명인데다가 이것들은 단 1번만 사용되어질 것이라면 이렇게 많은 자식 클래스를 만드는 건 큰 낭비다. 이 때, 익명 클래스를 사용한다.

public static void main(String args[]) {
    Person gildong = new Person() {
        @Override
        public void whoAmI() {
            System.out.println("HongGilDong");
        }
    }
}