관련 이론 및 문법

(final 참고)

http://kkikkodev.tistory.com/374


문제 의도

주어진 코드를 컴파일한 후, 실행한 결과를 고르는 문제입니다.


답안

A


풀이 방법

이 문제는 final 에 대한 문제입니다. 소스코드를 살펴보면, ItemTest 라는 클래스가 존재하는 것을 볼 수 있습니다. 멤버 변수로 int 형 변수 id 를 가지고 있습니다. 이 id 는 private 이며, final 입니다. private 이기 때문에, 이 클래스의 멤버 메소드 내에서만 접근 할 수 있고, final 이기 때문에, 딱 한 번만 초기화될 수 있고, 두 번째부터는 값을 변경할 수가 없습니다. (상수화되기 때문) 4 번 라인에는, 매개변수로 int 형 id 를 받는 생성자 메소드가 있습니다. 8 번 라인에는 매개변수로 int 형 newId 를 받아서 멤버 변수 id 를 newId 로 변경하는 updateId 메소드가 있습니다.


12 라인의 main 메소드가 실행되면, 13 라인에서, ItemTest fa = new ItemTest(42); 문장을 통해서, ItemTest 형 객체 fa 를 생성합니다. 이때 멤버 변수 id 는 42 가 됩니다. 그 다음에, 14 라인의 fa.updateId(69); 문장을 통해서, 멤버 변수 id 를 69 로 다시 바꾸려고 시도하게 됩니다. 하지만, 멤버 변수 id 는 final 이기 때문에, 이미 13 라인에서 42 로 초기화되고, 그 뒤에 14 라인에서 또 값을 69 로 변경하려고 하면 컴파일 에러가 나게 됩니다. (final 변수의 값을 바꿀 수 없다는)


따라서 답안은 A 가 됩니다.


by kkikkodev 2016. 11. 13. 01:20