[JAVA] Anonymous Inner Class

2024. 3. 27. 10:49·JAVA

익명 내부 클래스(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
'JAVA' 카테고리의 다른 글
  • [JAVA] Lambda
  • [JAVA] Generic Type
  • [JAVA] Inner Class와 Outer Class
  • [JAVA] Interface
whkim98
whkim98
꾸준히 내 것으로 만드는 게시글을 작성하자
  • whkim98
    내 일기장
    whkim98
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • Project
        • Insty
        • ERP
      • Cloud
        • NAVER CLOUD Web DevOps
        • Public
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
        • 리눅스마스터
        • AWS
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    SQLD
    django
    Cloud
    spring
    Java
    Tomcat
    brycpt
    해시 암호화
    프로그래머스
    Postman
    RDBMS
    Python
    정보처리기사
    eGov
    js
    node
    git
    코딩테스트
    github
    web
    annotation
    gitbash
    코테
    AdSP
    코딩
    html
    React
    CORS
    jsp
    javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
whkim98
[JAVA] Anonymous Inner Class
상단으로

티스토리툴바