OCJP (1Z0-851 / 2012-08-28 / Exam C) - 6 번
관련 이론 및 문법
(메소드 오버라이딩 (method overriding) 참고)
http://kkikkodev.tistory.com/86
문제 의도
주어진 소스코드에서 7 라인에 추가했을 때, Lois 클래스를 정상적으로 컴파일하게 만드는 보기를 4 개 고르는 문제입니다.
답안
A, B, E, F
풀이 방법
이 문제는 오버라이딩에 관련한 문제입니다. 소스코드를 보면, Hi 클래스가 있고 안에 m1 과 m2 메소드가 정의되어 있습니다. m1 메소드는 접근제어 지시자가 default 이고, m2 메소드는 접근제어 지시자가 protected 입니다. 그리고 Lois 클래스는 Hi 클래스를 상속하고 있습니다.
7 라인에 들어갈 수 있는 코드는 여럿이 될 수 있는데, 보기를 살펴보면, Hi 클래스의 m1 과 m2 메소드를 overriding 한 메소드들이라는 것을 알 수 있습니다. overriding 할 때, 접근 제한자 범위를 줄일 수는 없기 때문에, 기존의 m1 메소드의 범위가 default (= package) 이기 때문에, 이보다 작은 범위인 private 으로 변환한 보기 C 는 답안 후보에서 제외합니다. (접근 제한자의 범위 : private -> default -> protected -> public 순으로 범위가 넓어짐) 그리고, 기존의 m2 메소드의 범위가 protected 이기 때문에, 이보다 작은 범위인, default 로 변환한 보기 D 와 private 으로 변환한 G 또한 답안 후보에서 제외합니다.
따라서, 답안은 A, B, E, F 가 됩니다.