글
관련 이론 및 문법
(추상 클래스 (abstract class) 참고)
http://kkikkodev.tistory.com/83
(기본 생성자, 상속시 부모 생성자 호출, super 참고)
http://kkikkodev.tistory.com/87
문제 의도
코드를 컴파일한 후 실행한 결과를 고르는 문제입니다.
답안
D
풀이 방법
코드를 살펴보면, 총 4 개의 클래스가 있는 것을 알 수 있습니다. 가장 부모 클래스인 C1, 그리고 이를 상속하는 C2, 그리고 C2 를 상속하는 C3, main 메소드가 있는 Ctest 클래스까지 총 4 개의 클래스가 있습니다. 이 중, C1 은 추상 클래스인데, 추상 메소드는 하나도 존재하지 않습니다. 이처럼 추상 클래스로 만들고, 추상 메소드를 넣지 않아도 됩니다. 단, 추상 메소드가 하나라도 있다면, 그 클래스는 무조건 추상 클래스로 정의해야 합니다.
Ctest 클래스의 main 메소드에서는 new C3(); 문장을 통해서 C3 객체를 생성하고 있습니다. C3 형태를 힙 메모리에 생성한 다음에, C3 클래스의 기본 생성자를 호출합니다. 상속 관계에 있는 상태에서, 자식 클래스의 객체를 생성하면, 부모 클래스의 기본 생성자부터 먼저 호출하므로, C3 의 기본 생성자에서는 부모 클래스인 C2 의 기본 생성자를 먼저 호출하게 됩니다. 그리고 C2 의 기본 생성자에서는 부모 클래스인 C1 의 기본 생성자를 먼저 호출하게 됩니다. C1 의 기본 생성자에서는 1 을 화면에 출력합니다. 그 다음에, C2 의 기본 생성자로 돌아와서, 2 를 화면에 출력합니다. 마지막으로, C3 의 기본 생성자로 돌아와서, 3 을 화면에 출력합니다. 이처럼, C3 의 기본 생성자만 호출했는데도 불구하고, C1 의 기본 생성자 -> C2 의 기본 생성자 -> C3 의 기본 생성자 순으로 자동 호출되는 것입니다. 만약 부모의 기본 생성자가 아닌, 다른 오버로딩된 생성자를 호출하고 싶으면, super 키워드를 활용합니다. 결과적으로 출력결과는 123 이 되어, 답안은 D 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
| 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) - 16 번 (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) - 12 번 (0) | 2016.10.29 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 11 번 (0) | 2016.10.29 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 10 번 (0) | 2016.10.29 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 9 번 (0) | 2016.10.29 |
| OCJP (1Z0-851 / 2012-08-28 / Exam C) - 8 번 (0) | 2016.10.29 |
RECENT COMMENT