본문 바로가기
JAVA

익명 객체

by 융디's 2024. 4. 27.
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

'JAVA' 카테고리의 다른 글

Stream  (0) 2024.05.03
람다식  (0) 2024.05.03
UDP 프로그래밍  (0) 2024.04.27
TCP 프로그래밍  (1) 2024.04.27
네트워크의 기본  (0) 2024.04.27