글
관련 이론 및 문법
(throws 가 적용된 메소드 overriding 참고)
http://kkikkodev.tistory.com/294
문제 의도
주어진 소스코드를 컴파일하여 실행한 결과를 고르는 문제입니다.
답안
A
풀이 방법
소스코드를 살펴보면, static class A 가 있고, (아마 어딘가에 nested 상태로 존재할 것입니다. 왜냐하면 static 외부 클래스는 존재하지 않는 문법이기 때문입니다.) 그 안에 process 메소드가 Exception 을 throws 하고 있습니다. 그리고 B 클래스는 A 클래스를 상속하면서 process 메소드를 overriding 하고 있습니다.
프로그램이 실행되면, main 메소드가 호출되고, new B().process(); 문을 실행하게 됩니다. 먼저 B 생성자를 호출하여 B 형 객체를 생성하고 바로 process 메소드를 호출합니다. overriding 된 B 클래스의 process 가 호출되어 "B" 를 출력합니다.
여기서 메소드 overriding 이 에러가 안 나는 이유는 부모 클래스인 A 클래스에서 process 메소드에 throws Exception 이 있는데, 자식 클래스인 B 클래스에서 process 메소드에 throws 문이 없기 때문에, 가능합니다. 만약 이와 반대로 부모에는 throws 문이 없었는데, 자식에서 throws Exception (checked Exception) 이 있었다면 컴파일 에러가 났을 것입니다.
따라서 답안은 A 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 50 번 (0) | 2015.09.10 |
---|---|
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 49 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 48 번 (2) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 47 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 46 번 (0) | 2015.09.10 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 44 번 (0) | 2015.09.06 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 43 번 (0) | 2015.09.05 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 42 번 (0) | 2015.09.05 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 41 번 (0) | 2015.09.05 |
OCJP (1Z0-851 / 2012-08-28 / Exam B) - 40 번 (0) | 2015.09.03 |
RECENT COMMENT