글
관련 이론 및 문법
(메소드 오버라이딩 (method overriding) 참고)
http://kkikkodev.tistory.com/86
문제 의도
코드를 컴파일한 후 실행한 결과를 고르는 문제입니다.
답안
B
풀이 방법
코드를 살펴보면, 총 2 개의 클래스가 있습니다. 부모 클래스인 TestA, 이를 상속하는 자식 클래스인 TestB 클래스가 있고, TestA 클래스 내에는 start 메소드가 있고, TestB 클래스에서는 이 start 메소드를 overriding 하고 있습니다.
main 메소드가 실행되면, 먼저, new TestB() 문장을 통해서 TestB 클래스형 객체를 힙에 생성하고, TestB 클래스의 기본 생성자를 호출합니다. 그리고, 이 객체를 (TestA) 문장을 통해서 부모 클래스형인 TestA 형으로 강제 형변환합니다. 마지막으로. .start(); 문장을 통해서, start 메소드를 호출합니다. 강제로 부모 형으로 형변환했으므로, 원래대로라면, 부모 클래스인 TestA 클래스의 start 메소드가 호출되어야 할 것이지만, 이 메소드는 자식 클래스인 TestB 클래스에 의해서 overriding 되었기 때문에, 무조건 자식 클래스인 TestB 클래스의 start 메소드가 호출되게 됩니다. 따라서, TestB 가 화면에 출력되게 되어, 답안은 B 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 21 번 (4) | 2016.11.12 |
|---|---|
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 20 번 (0) | 2016.11.06 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 19 번 (0) | 2016.11.06 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 18 번 (0) | 2016.11.05 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 17 번 (0) | 2016.10.30 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 15 번 (0) | 2016.10.30 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 14 번 (0) | 2016.10.30 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 13 번 (0) | 2016.10.29 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 12 번 (0) | 2016.10.29 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 11 번 (0) | 2016.10.29 |
RECENT COMMENT