[Java] 익명 클래스(Anonymous Class)

2025. 5. 22. 18:38·공부/☕Java

✅ 1. 익명 클래스란?

  • "익명" + "클래스" 이름이 없는 클래스를 의미한다.
  • 일회성으로 1개의 객체를 생성하기 위한 클래스이며, 익명 클래스 정의와 동시에 객체를 생성할 수 있다.

✅ 1. 익명 클래스 사용 방법

// 부모 클래스
class Animal {
    public void sound() {
        System.out.println("동물소리");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Animal() {
            @Override
            public void sound() {
                Systme.out.println("강아지 소리");
            }
        };
        dog.bark();
    }
}
  • 익명클래스로 만들게 되면, 익명의 자식 클래스가 만들어지게 된다. 즉, 오버라이딩을 통해 재정의를 하기 위해 사용을한다.
  • 만약 재정의를 하지 않는 경우에도 메서드 호출이 가능하며, 이는 상속과 같은 개념이다.
  • 단, 익명 클래스에 상위클래스 즉, 현재 생성하는 클래스에 없는 메서드나 필드를 새로 만들 경우에는 사용은 가능하지만, 익명 클래스 내부에서만 사용이 가능하며, 외부에서는 사용이 불가능하다.
  • 즉, 외부에서 사용이 가능한건 원래 클래스의 정의된 필드나 메서드이다.

✅ 2. 익명 클래스 사용 이유

  • 상속 뿐만 아니라 인터페이스, 추상도 가능해서 클래스 재사용 없이 딱 한 번만 구현해서 쓸 거라면, 별도의 클래스 저으이 말고 익명 클래스를 사용하는 것이 더 좋음.
  • 지역 변수처럼 익명 클래스로 정의하고 스택이 끝나면 삭제되도록 할 수 있어 메모리 절약 측면에서 이점이 있음.
  • 상속한 클래스의 일부 메서드만 간단히 재정의하고 싶은 경우, 굳이 새 클래스를 만들지 않고 그 자리에서 재정의를함.
  • 인터페이스 즉석 구현이 가능해서 스레드 등에서 많이 사용이 됨.

'공부 > ☕Java' 카테고리의 다른 글

[Java] 자바 함수형 인터페이스와 람다식(Lambda Expression) 쉽게 배우기  (1) 2025.05.23
[Java] 제네릭(Generic) 문법 정리: 클래스, 메서드, 제한까지  (0) 2025.05.23
[Java] 다형성(polymorphism)  (1) 2025.05.22
[Java] 추상화 - 추상클래스, 추상메서드, 인터페이스  (0) 2025.05.20
[Java] Enum 쉽게 이해하기  (1) 2025.05.05
'공부/☕Java' 카테고리의 다른 글
  • [Java] 자바 함수형 인터페이스와 람다식(Lambda Expression) 쉽게 배우기
  • [Java] 제네릭(Generic) 문법 정리: 클래스, 메서드, 제한까지
  • [Java] 다형성(polymorphism)
  • [Java] 추상화 - 추상클래스, 추상메서드, 인터페이스
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    유비쿼터스
    방송대
    자료구조
    C언어
    배열
    알고리즘
    컴퓨터과학과
    컴퓨터의 이해
    spring
    Python
    파이썬
    이산수학
    함수
    방송통신대학교
    컴퓨터과학 개론
    자바
    그래프
    방통대
    운영체제
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[Java] 익명 클래스(Anonymous Class)
상단으로

티스토리툴바