728x90
익명 객체
@2024.04.24
익명 객체
💡
이름이 없는 객체로, 클래스의 이름을 사용하지 않고, 직접 객체를 생성하는 것이다.
- 일반적으로 한 번만 사용할 객체
- 객체를 생성하면서 동시에 해당 객체의 메서드를 호출하거나, 인터페이스를 구현하는 등의 수행
- 문법 구조
- new 키워드와 함께 인터페이스나 추상 클래스 이름을 사용하여 생성
- 중괄호 안에 필요한 메서드 구현
- 익명 객체는 종류
- 익명 자식 객체 : 클래스를 상속해서 만들 경우
public class Animal{ public void speak(){ System.out.println("소리를 내보세요"); } } public class Test{ public static void main(String[] args){ Animal duck = new Animal{ @Override public void speak(){ System.out.println("꽥꽥"); } }
- 익명 구현 객체 : 인터페이스를 구현해서 만들 경우
인터페이스명 객체명 = new 인터페이스명(){ }; 추상 클래스명 객체명 = new 추상클래스명() { }; Runnable runnable = new Runnable() { @Override public void run() { System.out.println("익명 함수 일세."); } };
- 익명 자식 객체 : 클래스를 상속해서 만들 경우
- 예시
- 메서드의 매개변수로 익명 객체 전달
public class Test { public static void main(String[] args) { // 익명 객체를 바로 매개변수로 전달 printMessage(new Animal() { @Override public void speak() { System.out.println("꽥꽥"); } }); } // 매개변수로 익명 객체를 받는 메서드 public static void printMessage(Animal animal) { animal.speak(); } }
- 메서드 내에서 익명 객체를 생성하여 이용하기
public class Test { public static void main(String[] args) { // 메서드 내에서 익명 객체를 생성하여 사용 Animal duck = createDuck(); duck.speak(); } // 메서드 내에서 익명 객체 생성 후 반환 public static Animal createDuck() { return new Animal() { @Override public void speak() { System.out.println("꽥꽥"); } }; } }
728x90