관련 이론 및 문법

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

http://kkikkodev.tistory.com/86


문제 의도

주어진 보기 중에서 2 개의 메소드를 각각 삽입했을 때, Three 클래스가 정상적으로 돌아가는지 고르는 문제입니다.


답안

C, D


풀이 방법

주어진 소스코드를 보면, 총 3 개의 클래스가 있는 것을 알 수 있습니다. One 클래스 안에는 One 형을 반환하는 foo 메소드가 있고, 이 One 클래스를 상속하는 Two 클래스에는 마찬가지로 이를 overriding 한 One 형을 반환하는 foo 메소드가 있고 마지막으로 Three 클래스는 Two 클래스를 상속하고 있습니다. 


보기들을 보면 모두 메소드명이 foo 인 것을 알 수 있습니다. 즉, overriding 한 메소드를 고르는 문제입니다. overriding 의 기본 원칙은 부모의 메소드와 이름이 동일해야 하고, 반환형, 매개변수까지 동일해야 한다는 것입니다. 따라서, 보기 A 는 반환형이 void 이므로 답안 후보에서 제외합니다. 또한 보기 B 도 반환형이 int 이므로 답안 후보에서 제외합니다. 일단 부모 클래스의 foo 메소드의 반환형이 One 이므로 이와 동일한 보기 D 는 답안이 됩니다. 메소드 오버라이딩시 반환형은 부모 클래스의 메소드의 반환형보다 더 상위 클래스가 와서는 안되므로, One 보다 더 상위클래스를 반환하고 있는 보기 E 도 답안 후보에서 제외합니다. 보기 C 는 Two 형이 One 의 하위 클래스이므로 답안이 됩니다.


따라서 C 와 D 가 답안이 됩니다.


by kkikkodev 2016. 10. 30. 00:15