본문 바로가기

Programming/JAVA

중첩 클래스&인터페이스(5) - 익명 객체 5

java logo image

 

 

앞서 살펴본 익명 객체를 활용한 인터페이스 구현 객체 사용법에 대해서 다시 한번 상기해 보겠습니다. 이번 아티클에서는 예제 코드를 통해서 익명 구현 클래스 인스턴스 생성과 사용 방식을 연습해 보겠습니다. 

 

 

public interface RemoteControl {
	public void turnOn();
	public void turnOff();
}

 

public class Anonymous {
	// 필드 값으로 인터페이스 구현 클래스 익명 인스턴스 구현
	RemoteControl field = new RemoteControl() {
		@Override
		public void turnOn() {
			System.out.println("TV전원 ON");
		}
		
		@Override
		public void turnOff() {
			System.out.println("TV전원 OFF");
		}
	};
	
	void method1() {
		// 로컬 변수로 구현
		RemoteControl localVar = new RemoteControl() {
			@Override
			public void turnOn() {
				System.out.println("Audio전원 ON");
			}
			
			@Override
			public void turnOff() {
				System.out.println("Audio전원 OFF");
			}
		};
		
		localVar.turnOn();
	}
	
	void method2(RemoteControl rc) {
		rc.turnOn();
	}
}

 

public class ExampleMain {	
	public static void main(String[] args) {
		Anonymous anony = new Anonymous();
		
		anony.field.turnOn();
		anony.method1();
		anony.method2(new RemoteControl() {
			@Override
			public void turnOn() {
				System.out.println("스마트TV 전원ON");
			}
			
			@Override
			public void turnOff() {
				System.out.println("스마트TV 전원OFF");
			}
		});
	}
}

/* 출력
TV전원 ON
Audio전원 ON
스마트TV 전원ON
*/

 

Anonymous 클래스에서 필드로 익명 인스턴스를 구현한 경우, 그리고 메서드 내부의 로컬 변수로 익명 인스턴스를 생성한 경우, 파라미터 인자로 익명 인스턴스를 생성한 경우를 각각 구현해 보았습니다.