관련 이론 및 문법

(this VS super 참고)

http://kkikkodev.tistory.com/95


문제 의도

주어진 소스코드를 컴파일하여 실행한 결과를 고르는 문제입니다.


답안

C


풀이 방법

소스코드를 살펴보면, 1 번 라인에 X 클래스가 정의되어 있는 것을 알 수 있습니다. 그 안에는, 2 라인에 1 을 출력하는 기본 생성자와 3 라인에 2 를 출력하는 매개변수 생성자 (매개변수는 int 형 x) 가 있습니다. 7 번 라인에 Y 클래스가 정의되어 있고, X 클래스를 상속하고 있습니다. 그 안에는, 8 라인에, 3 을 출력하는 기본 생성자와, 9 라인에, 4 를 출력하는 매개변수 생성자 (매개변수는 int 형 y) 가 있고, main 메소드도 있습니다.


실행을 하면, 먼저, 12 라인의 main 메소드가 호출되고, new Y(5); 문장을 통해서 Y 의 매개변수 생성자를 호출합니다. 9 번 라인의 매개변수 생성자가 호출되고, 10 번 라인의 this(); 가 호출되어, 자기 자신의 기본 생성자를 호출합니다. 따라서, 8 번 라인의 기본 생성자가 호출되고, super(6); 문장을 통해서, 부모의 매개변수 생성자를 호출합니다.


3 번 라인의 매개변수 생성자가 호출되고, 4 번 라인의 this(); 문장을 통해 다시, 자기 자신의 기본 생성자를 호출합니다. 2 번 라인의 기본 생성자가 호출되고, 1 을 화면에 출력합니다. 그 다음, 기본 생성자가 종료되어, 이를 호출했었던, 4 번 라인의 this(); 다음 문장으로 돌아가서, 2 를 화면에 출력합니다. 그 다음, X 클래스의 매개변수 생성자가 종료되어, 이를 호출했었던, 8 번 라인의 super(6); 문장 다음으로 돌아가서, 3 을 화면에 출력합니다. 그 다음, Y 클래스의 기본 생성자가 종료되어, 이를 호출했었던, 10 번 라인의 this(); 문장 다음으로 돌아가서, 4 를 화면에 출력합니다. 그리고 Y 클래스의 매개변수 생성자도 종료됩니다.


결국, 1234 가 차례대로 출력된 보기 C 가 답안이 됩니다.


by kkikkodev 2015. 8. 28. 13:36