본문 바로가기
JAVA

[JAVA] Anonymous Inner Class

by kwh_coding 2024. 3. 27.

익명 내부 클래스(Anonymous Inner Class)는 이름이 없는 내부 클래스로, 클래스의 정의와 동시에 인스턴스를 생성하여 사용된다. 주로 간단한 인터페이스 구현이나 추상 클래스의 인스턴스화에 사용된다. 익명 내부 클래스는 한 번만 사용되는 경우에 유용하다.

 

1. 추상 클래스의 인스턴스화: 추상 클래스나 인터페이스를 상속받아서 인스턴스를 생성하고 메서드를 재정의한다.

2. 인터페이스의 구현: 인터페이스를 구현하고 해당 메서드를 정의한다. 

public class AnonymousInnerClassExample {
    interface Greeting {
        void greet();
    }

    public static void main(String[] args) {
        // 익명 내부 클래스로 인터페이스 구현
        Greeting greeting = new Greeting() {
            @Override
            public void greet() {
                System.out.println("안녕하세요!");
            }
        };

        greeting.greet(); // 출력: 안녕하세요!
    }
}

 


Anonymous Inner Class의 특징

 

1. 이름이 없음: 익명 내부 클래스는 이름이 없기 때문에 클래스 이름을 지정할 필요가 없다. 클래스의 정의와 인스턴스 생성이 동시에 이루어진다.

 

2. 한 번만 사용: 익명 내부 클래스는 일회성으로 사용되며 다시 사용할 수 없다. 클래스의 정의가 인스턴스화할 때 함께 이루어지기 때문에 한 번 생성되면 다시 재사용할 수 없다.

 

3. 외부 변수와 접근: 익명 내부 클래스는 외부 클래스의 변수를 참조할 수 있다. 하지만 해당 변수는 final이거나 effectively final(사실상 final)해야 한다. 

 

4. 클래스 및 인터페이스 구현: 익명 내부 클래스는 클래스의 하위 클래스나 인터페이스의 구현을 동시에 수행할 수 있다. 예를 들어 인터페이스의 메서드를 구현하거나 추상 클래스를 상속받아 새로운 클래스를 생성할 수 있다.

 

5. 인스턴스 생성: 익명 내부 클래스는 클래스의 정의와 인스턴스 생성을 동시에 수행한다. 이를 통해 코드가 간결해지고 임시적인 객체를 쉽게 생성할 수 있다.

 

6. 간편한 구현: 간단한 인터페이스 구현이나 추상 클래스의 인스턴스화에 유용하게 사용된다. 클래스를 별도로 정의하지 않고도 필요한 기능을 구현할 수 있다.

 

 

익명 내부 클래스는 주로 간단한 동작을 수행하는 작은 코드 블록에 사용된다. 코드를 간결하게 유지하고 임시적인 객체를 쉽게 생성할 수 있도록 도와준다. 그러나 코드가 복잡해지거나 여러 번 사용되는 경우에는 별도의 클래스를 정의하여 사용하는 것이 더 나을 수 있다.

 

'JAVA' 카테고리의 다른 글

[JAVA] Lambda  (0) 2024.04.01
[JAVA] Generic Type  (0) 2024.03.28
[JAVA] Inner Class와 Outer Class  (0) 2024.03.27
[JAVA] Interface  (0) 2024.03.27
[JAVA] Abstract 예제  (0) 2024.03.26