07
21
728x90

중첩 인터페이스 선언

 

예제)

package sec04.exam01_nestedinterface;

public class Button 
{
	OnClickListener listener;
	
	void setOnClickListener(OnClickListener listener) //setter
	{
		//외부에서 구현객체를 받아서 저장
		this.listener = listener;
	}
	
	void touch()
	{
		//인터페이스의 추상메소드 호출
		listener.onClick();
	}
	
	//중첩인터페이스
	interface OnClickListener
	{
		void onClick(); //추상 메소드
		
	}
}
package sec04.exam01_nestedinterface;

public class CallListener implements Button.OnClickListener
{
	@Override
	public void onClick() 
	{
		System.out.println("전화를 겁니다.");
	}
}
package sec04.exam01_nestedinterface;

public class MessageListener implements Button.OnClickListener 
{
	@Override
	public void onClick() 
	{
		System.out.println("메시지를 보냅니다.");
	}
}
package sec04.exam01_nestedinterface;

public class ButtonExample 
{
	public static void main(String[] args)
	{
		Button btn = new Button();
		
		//class를 만들고 객체를 생성해서 처리
		btn.setOnClickListener(new CallListener()); //외부에서 구현객체를 가져와서 대입 , 어떤객체를 대입하느냐에 따라 해당 객체의 onClick메소드가 호출될것임
		btn.touch();
		
		btn.setOnClickListener(new MessageListener());
		btn.touch();
		
		//직접 익명구현객체를 대입
		btn.setOnClickListener(new Button.OnClickListener() 
		{
			@Override
			public void onClick() {
				System.out.println("사진을 찍습니다.");
			}
		});
		btn.touch();
	}
}

출력 결과

728x90
COMMENT