관련 이론 및 문법

(익명 클래스 (anonymous class) 참고)

http://kkikkodev.tistory.com/147


문제 의도

주어진 소스코드의 15 라인에 삽입하여, Sprite 클래스를 정상적으로 컴파일되게 하는 보기를 고르는 문제입니다.


답안

C


풀이 방법

소스코드를 살펴보면, 10 번 라인에, Foo 인터페이스가 정의 되어 있고, 그 안에, bar 라는 추상 메소드가 있습니다. 그리고, 11 번 라인에 Sprite 클래스가 정의되어 있고, 12 번 라인에, fubar 메소드가 있는데, 매개변수가 Foo 형 foo 변수이고, 그 안에서는 foo.bar() 문을 통해, foo 의 bar 메소드를 호출하고 있습니다. 마지막으로, 13 라인에는 testFoo 메소드가 정의되어 있고, 그 안에 14 ~ 16 라인에서는 fubar(); 문을 통해 12 라인의 fubar 메소드를 호출하고 있는 것을 알 수 있습니다.


fubar 메소드의 매개변수가 Foo 형 변수이기 때문에, Foo 형 객체를 생성하여 매개변수로 넘겨주어야 하는데, 인터페이스는 기본적으로 new 를 통하여 객체를 생성할 수 없습니다. 하지만, 익명 클래스를 활용하면, 객체화하는 것이 가능합니다. 따라서, new Foo() 를 하면서, 동시에 추상 메소드의 정의도 해주어야 합니다.


결국, 


new Foo(){

public int bar(){

return 1;

}

};


의 형태로 익명 클래스 객체를 만들고 이를 15 라인의 fubar 메소드의 매개변수로 넘겨주어야 합니다.


따라서, 답안은 C 가 됩니다.


by kkikkodev 2015. 9. 2. 15:10