익명객체(익명클래스)

jaehun_dev·2022년 12월 21일
0

Java

목록 보기
1/6

익명 객체 (익명 클래스)

프로그램에서 일시적으로 사용되고 재사용되지 않는 객체에 대해서, 클래스를 모두 만들어준다면 코드가 복잡해지고 오히려 유지보수에 불리해질 수 있다. 따라서 이러한 경우 클래스를 별도로 만들어주지 않고 코드 내에서 익명클래스를 생성 및 정의하여 일회성으로 사용한다.

구현 방법: 익명 자식객체

public class Basic{
	void print(){
    	System.out.println("First Print");        
    }
}

public class Anony{
	Basic tuning = new Basic(){
    	String mode = "tuning";
        
        void print(){
        	System.out.println("Tuning Print");
        }
        
        void print2(){
        	System.out.println("Mode is"+mode);
        }
    };
    //Basic형 변수 tuning에 익명 자식 객체를 담는다.
    //mode와 print2()는 자식 객체 내에서는 사용될 수 있지만, 변수가 부모타입의 클래스이기 때문에 외부에서 사용 불가하다.
}

구현 방법: 익명 구현객체

부모클래스를 상속한 익명 자식객체와 달리, 인터페이스를 구현하여 익명 클래스를 생성하는 것도 가능하다. 일반적인 상속과 달리 인터페이스는 무조건 메서드들을 구현해야 하기 때문에 규격화에 도움이 된다.

public class Button{
	interface ListenerInterface{
    	void onClick();
    }
	ListenerInterface listener;
    
    void setListenerInterface(ListenerInterface listener){
    	this.listener = listener;
    }
    
    void touch(){
    	listener.onClick();
    }
}  

public class ButtonHandler{
	Button firstBtn = new Button();
    Button secondBtn = new Button();
    
    //인터페이스를 구현한 익명 객체
    Button.OnClickListener listener = new Button.OnClickListener(){
    		@Override
            public void onClick(){
            	System.out.println("second Button");
            }
    }
    
    secondBtn.setListenerInterface(listener);
    //매개변수로 익명 객체 바로 생성
    firstBtn.setListenerInterface(new Button.OnClickListener(){
    	@Override
        public void onClick(){
        	System.out.println("first Button");
    	}    
    });
}
profile
취업준비생/코딩&프로젝트 같이 하실분 연락주세요

0개의 댓글