반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Java
- 정규식
- junit5
- Eclipse
- junit
- 인텔리제이
- js
- vscode
- string
- input
- math
- list
- javascript
- HashMap
- 자바
- ArrayList
- json
- java테스트
- 문자열
- CSS
- 자바스크립트
- IntelliJ
- 이클립스
- Array
- 테스트자동화
- html
- 자바문법
- 배열
- Visual Studio Code
- 단위테스트
Archives
- Today
- Total
어제 오늘 내일
[Java] 익명 클래스(anonymous class) 사용 예제 본문
Java의 익명 클래스(anonymous class)는 이름이 없는 클래스이며,
일회성 동작을 만들 때 매우 유용합니다.
특히 인터페이스 구현, 추상 클래스 상속, 콜백 처리, 이벤트 핸들러 등에서 널리 사용됩니다.
익명 클래스는 “클래스를 만들고 → 객체 생성”의 과정을 한 번에 처리할 수 있는 간결한 방식입니다.
1. 익명 클래스 기본 형태
익명 클래스는 보통 인터페이스나 추상 클래스의 구현을 즉석에서 정의할 때 사용합니다.
형식:
타입 변수 = new 타입() {
// 메서드 재정의(오버라이딩) 필요
};
2. 인터페이스 구현 예제
가장 일반적인 사용 방식입니다.
interface Greeting {
void hello();
}
public class Main {
public static void main(String[] args) {
Greeting g = new Greeting() {
@Override
public void hello() {
System.out.println("Hello from anonymous class");
}
};
g.hello();
}
}
설명
- Greeting 인터페이스를 구현한 익명 클래스 생성
- 별도의 구현 클래스를 만들지 않고 바로 오버라이딩
3. 추상 클래스 상속 예제
추상 클래스의 일부 메서드만 빠르게 구현할 때도 사용됩니다.
abstract class Animal {
abstract void sound();
}
public class Main {
public static void main(String[] args) {
Animal a = new Animal() {
@Override
void sound() {
System.out.println("익명 클래스 동물 소리");
}
};
a.sound();
}
}
설명
- Animal을 상속한 클래스를 즉석에서 생성
- 클래스 이름 없이 바로 구현
4. 콜백(Callback) 구조에서 사용
메서드에 동작을 전달해야 할 때 자주 활용됩니다.
interface Task {
void run();
}
public class Main {
static void execute(Task task) {
task.run();
}
public static void main(String[] args) {
execute(new Task() {
@Override
public void run() {
System.out.println("작업 실행!");
}
});
}
}
설명
- execute() 함수에 익명 클래스를 전달해 콜백 역할 수행
5. 버튼 클릭 이벤트 예제 (GUI)
GUI(예: Swing)에서 이벤트 핸들러로 매우 많이 사용됩니다.
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("버튼 클릭됨!");
}
});
설명
- ActionListener 구현체를 따로 만들 필요 없이 익명 클래스로 간단히 처리
6. 익명 클래스에서 변수 사용 규칙
익명 클래스는 내부적으로 지역 변수를 복사해서 사용하기 때문에
해당 변수는 **effectively final(실질적으로 final)**이어야 합니다.
void test() {
int num = 10;
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println(num);
}
};
}
num을 변경하면 오류:
num = 20; // ❌ 변경 불가
7. 익명 클래스가 유용한 상황
- 특정 기능을 한 번만 구현하면 될 때
- 불필요하게 새로운 클래스를 만들기 싫을 때
- 인터페이스 구현, 이벤트 처리, 콜백 등에서 빠르게 동작 정의하고 싶을 때
- 코드 가독성을 높이고 파일을 줄이고 싶을 때
8. 정리
- 익명 클래스는 이름 없는 클래스 + 객체 생성을 동시에 하는 기능
- 인터페이스 구현, 추상 클래스 상속을 간편하게 처리
- 콜백, 이벤트 처리에서 특히 많이 사용
- 지역 변수는 effectively final이어야 사용 가능
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 패키지(package)와 import 구조 이해 (0) | 2025.12.30 |
|---|---|
| [Java] enum 사용법 및 실전 예제 (0) | 2025.12.30 |
| [Java] 내부 클래스(inner class) 종류와 사용법 (0) | 2025.12.29 |
| [Java] 메서드 오버라이딩 규칙 정리 (0) | 2025.12.28 |
| [Java] 합성(Composition) vs 상속(Inheritance) (0) | 2025.12.28 |
Comments
