4.1) OCJP/1Z0-851 / 2012-08-28

OCJP (1Z0-851 / 2012-08-28 / Exam A) - 14 번

kkikkodev 2015. 7. 8. 22:55



관련 이론 및 문법

(메소드 오버로딩 (method overloading) 참고)

http://kkikkodev.tistory.com/92


(메소드 오버라이딩 (method overriding) 참고)

http://kkikkodev.tistory.com/86


문제 의도

주어진 소스코드의 5 라인에, 보기의 메소드 정의부를 각각 삽입하였을 때, 컴파일이 정상적으로 되는 경우를 고르는 문제입니다.


답안

A, C, E, F, G


풀이 방법

먼저, 소스코드를 보면, Blip 이라는 클래스가 있고, 이 안에 blipvert 메소드가 있습니다. 그리고, Vert 라는 클래스가 있는데, 이는 Blip 클래스를 상속하고 있습니다. 


먼저, 오버로딩이 성립되는 조건부터 따져 보겠습니다. 부모 클래스의 메소드인 blipvert 메소드는 매개변수를 int x 로 취하고 있습니다. 보기 중, 타입이 다르거나, 개수가 다른 매개변수를 취하는 메소드는 C (long x), E (long x), F (long x), G (int x, int y) 입니다. 따라서, C, E, F, G 보기의 메소드는 삽입하였을 때, 오버로딩 조건이 성립하므로, 컴파일이 정상적으로 됩니다.


마지막으로, 오버라이딩 성립 조건에 대해 살펴보겠습니다. 반환형, 메소드명, 매개변수까지 모두 같은 보기를 찾으면, A, B 두개로 압축할 수 있습니다. 하지만, 오버라이딩 할때는 부모의 접근 제어 지시자를 축소하는 방향으로 변경할 수 없으므로, B 는 답안 후보에서 제외가 됩니다. (protected -> private) 


최종적으로, 오버로딩 + 오버라이딩 조건이 성립되어 컴파일이 정상적으로 되는 답안은, A, C, E, F, G 입니다.