익명 중첩 클래스

익명 중첩 클래스

익명 중첩 클래스란 객체 생성 시 해당 클래스의 내용을 재정의 또는 추가하기 위해 사용하는 것을 말한다. 클래스를 만드는 것이 아닌 객체 생성 시점에서의 재정의/추가이기 때문에 클래스 원본의 내용은 수정되지 않는다. 한 마디로 정의하면 1회용 상속이라고 이해할 수 있다.

익명 중첩 클래스의 형태

Phone.java
public class Phone{
    public void call(){
        System.out.println("전화 기능 실행");
    }
}

위의 코드에서 galaxy와 iPhone 객체 뒷 부분의 { } 가 익명 중첩 클래스이다.

클래스는 일반적으로 다음 형태를 가져야 한다.

class 이름 { ... }

하지만 익명중첩클래스는 이름이 없는 형태이다.

new 클래스명(){ ... }

익명 중첩 클래스의 활용 예시

Button.java
public abstract class Button {
    public abstract void push();
}

Button 클래스는 push의 형태만 만들고 내용을 작성하지 않기 위해 추상 클래스로 구현하였다. 또한 익명 중첩 클래스를 활용하여 각각 용도에 맞는 버튼들을 일회성 객체로 구현하였다. 물론 각각의 종류에 해당하는 버튼들을 Button의 하위 클래스로 구현하여 객체로 생성해도 된다. 만약 그렇게 된다면 코드는 다음과 같을 것이다.

Button.java
public abstract class Button {
    public abstract void push();
}

같은 결과가 나오기 때문에 어떠한 형태를 사용해도 무방하지만 한 번만 사용하기 위해 클래스까지 만드는 것은 매우 비효율적인 행위이기 때문에 해당하는 버튼을 일회성으로 사용할 것인지, 지속적으로 사용할 것인지에 따라 선택하여 사용하는 것이 바람직하다.

Last updated