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

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

kkikkodev 2015. 7. 8. 01:40



관련 이론 및 문법

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

http://kkikkodev.tistory.com/86


문제 의도

주어진 클래스들과 인터페이스에 대한 설명으로 옳은 것을 고르는 문제입니다.


답안

C


풀이 방법

C 클래스에서는 B 클래스를 상속하고 있습니다. B 클래스에는 (부모 클래스) execute 메소드의 반환형이 String 인데, C 클래스에서는 (자식 클래스) execute 메소드의 반환형이 Object 입니다. 일단, String 과 Object 는 다른 반환형입니다. 그럼 이 둘의 상속관계를 살펴봐야 하는데, String 은 Object 를 상속합니다. 따라서, Object 가 String 보다는 상위 클래스이고, execute 메소드 override 는 불가능합니다. 만약, 반대로, B 클래스의 execute 메소드의 반환형이 String 이 아닌, Object 이고, C 클래스의 execute 메소드의 반환형이 Object 가 아닌, String 인 경우라면, execute 메소드의 override 가 가능해 질것입니다. 이 문제에서는, C 클래스의 6 번 라인의 문제 때문에 컴파일 에러가 납니다. 따라서, 답안은 C 가 됩니다.