[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
kwh_coding
kwh_coding
성장하는 괴물 성괴 김우형
  • kwh_coding
    코딩 일기
    kwh_coding
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • ERP Project
      • NAVER CLOUD Web DevOps
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • Notion
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바