Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 익명 내부 클래스(Anonymous Inner Class)로 인터페이스 구현하는 방법

익명 내부 클래스(Anonymous Inner Class)는 이름이 없는 클래스로, 객체를 생성하는 시점(instantiation)에 곧바로 정의하는 방식입니다. 별도의 클래스 파일을 만들 필요 없이 인터페이스나 추상 클래스를 즉석에서 구현할 수 있어, 한 번만 사용되는 간단한 구현체가 필요할 때 특히 유용합니다.

기본 개념

일반적인 클래스는 먼저 선언한 뒤 객체를 생성하지만, 익명 내부 클래스는 new 키워드와 함께 클래스 본문을 중괄호 { } 안에 직접 작성합니다. 이때 컴파일러는 자동으로 고유한 이름을 부여하며, 코드가 더 간결해지고 가독성이 향상됩니다.

예제 코드

아래 프로그램에서는 TutorialsPoint 인터페이스의 toString() 메서드를 익명 내부 클래스로 구현하고, 그 반환값을 콘솔에 출력합니다.

interface TutorialsPoint {
    public String toString();
}

public class Main implements TutorialsPoint {
    public static void main(String[] args) {
        System.out.print(new TutorialsPoint() {
            public String toString() {
                return "Welcome to Tutorials Point";
            }
        });
    }
}

실행 결과

Welcome to Tutorials Point

코드 설명

new TutorialsPoint() { ... } 부분이 바로 익명 내부 클래스입니다. 인터페이스 타입의 객체를 생성하면서 동시에 toString() 메서드를 오버라이딩했습니다. 생성된 객체는 System.out.print()에 전달되며, 출력 시 자동으로 오버라이딩된 toString() 메서드가 호출되어 문자열이 화면에 표시됩니다.

익명 내부 클래스를 사용하는 이유

익명 내부 클래스는 다음과 같은 상황에서 활용하면 좋습니다.

- 일회성 구현: 해당 인터페이스를 프로젝트 전체에서 한 번만 구현할 경우 불필요한 클래스 선언을 줄일 수 있습니다.
- 코드 간결화: 구현과 객체 생성을 한곳에서 처리하므로 코드 흐름을 파악하기 쉽습니다.
- 이벤트 리스너 처리: GUI 프로그래밍(Swing, AWT 등)에서 버튼 클릭 리스너 등을 등록할 때 널리 사용됩니다.

참고로 Java 8부터는 람다식(Lambda Expression)을 통해 함수형 인터페이스를 더욱 간결하게 구현할 수 있지만, 여러 추상 메서드를 가진 인터페이스를 구현할 때는 여전히 익명 내부 클래스가 유용합니다.