Java/자바 정리
89. 익명 구현 객체 – 한 번만 쓰고 버리는 1회용 클래스 만들기
코딩하는냥이
2025. 5. 12. 13:01
반응형
이번 글에서는 익명 구현 객체(Anonymous Object) 를 사용하여
클래스의 메서드를 재정의하고 실행하는 방법을 학습합니다.
이름 없이 즉석에서 클래스를 선언하고 객체로 사용하는 방식으로,
주로 콜백 처리나 일회성 재정의에 활용됩니다.
📦 기본 클래스 정의 (Tire.java)
package ch09.sec07;
public class Tire {
public void roll() {
System.out.println("일반 타이어가 굴러갑니다.");
}
}
📌 자동차 클래스 (Car.java)
package ch09.sec07;
public class Car {
private Tire tire1 = new Tire();
// 익명 자식 객체를 필드에 직접 대입
private Tire tire2 = new Tire() {
public void roll() {
System.out.println("익명 자식 Tire 객체 1이 굴러갑니다.");
}
};
public void run1() {
tire1.roll(); // 일반 타이어
tire2.roll(); // 익명 자식 객체
}
public void run2() {
Tire tire = new Tire() {
public void roll() {
System.out.println("익명 자식 Tire 객체 2이 굴러갑니다.");
}
};
tire.roll();
}
public void run3(Tire tire) {
tire.roll();
}
}
📌 실행 클래스 (CarExample.java)
package ch09.sec07;
public class CarExample {
public static void main(String[] args) {
Car car = new Car();
car.run1();
car.run2();
car.run3(new Tire() {
public void roll() {
System.out.println("익명 자식 Tire 객체 3이 굴러갑니다.");
}
});
}
}
💻 실행 결과
일반 타이어가 굴러갑니다.
익명 자식 Tire 객체 1이 굴러갑니다.
익명 자식 Tire 객체 2이 굴러갑니다.
익명 자식 Tire 객체 3이 굴러갑니다.
💬 코드 설명
- new Tire() { ... }
→ 이름 없는 Tire 클래스의 자식 객체 생성 - tire1: 일반 객체
- tire2: 필드에 익명 객체 직접 대입
- run2(): 지역 변수로 익명 객체 선언
- run3(): 매개변수로 익명 객체 전달
✔ 즉, 필드, 지역변수, 매개변수 어디서든 익명 구현 객체 사용 가능
📌 익명 객체 특징 정리
위치 | 작성 형태 | 용도 |
필드 | private Tire tire = new Tire(){} | 1회용 자식 객체를 멤버로 사용 |
지역변수 | Tire tire = new Tire(){} | 메서드 내에서 일시적 객체로 사용 |
매개변수 | method(new Tire(){}) | 전달할 때 바로 구현체 지정 |
💡 포인트 정리
- 익명 구현 객체는 클래스 이름이 없음
- 즉석에서 클래스를 정의하면서 객체 생성
- 메서드 오버라이딩 가능
- 일반적으로 인터페이스 또는 추상 클래스 구현에 사용되지만
일반 클래스 상속도 가능
📌 정리하자면,
익명 구현 객체는 코드를 짧고 간결하게 만들면서도,
일회성 동작을 유연하게 처리할 수 있는 강력한 도구입니다.
특히 리스너, 콜백, 전략 객체 등에서 많이 사용됩니다.