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(){}) 전달할 때 바로 구현체 지정

💡 포인트 정리

  • 익명 구현 객체는 클래스 이름이 없음
  • 즉석에서 클래스를 정의하면서 객체 생성
  • 메서드 오버라이딩 가능
  • 일반적으로 인터페이스 또는 추상 클래스 구현에 사용되지만
    일반 클래스 상속도 가능

📌 정리하자면,
익명 구현 객체는 코드를 짧고 간결하게 만들면서도,
일회성 동작을 유연하게 처리할 수 있는 강력한 도구입니다.
특히 리스너, 콜백, 전략 객체 등에서 많이 사용됩니다.