관련 이론 및 문법

(Thread 클래스 참고)

http://kkikkodev.tistory.com/141


(Runnable 인터페이스 참고)

http://kkikkodev.tistory.com/121


문제 의도

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


답안

B


풀이 방법

소스코드를 보면, 먼저 Runnable 객체 r 을 생성하고 그 안에 run 메소드를 정의하고 있습니다. ("Cat" 을 화면에 출력하는) 그리고 Thread 객체 t 를 생성하면서 생성자 매개변수로 r 을 넘기고, 마찬가지로 run 메소드를 정의하고 있습니다. ("Dog" 를 화면에 출력하는) 마지막 라인에서, t.start(); 를 통해 쓰레드를 시작합니다.


쓰레드가 시작되면, run 메소드를 호출합니다. 여기서는 run 메소드가 Thread 에도 있고, Runnable 에도 있는데, Thread 는 Runnable 을 상속하므로 (Thread 가 자식 클래스) 하위 클래스인 Thread 클래스의 run 메소드가 호출됩니다. (method overriding) 따라서, Runnable 의 run 메소드는 가려지고 Thread 의 run 메소드가 호출되어 "Dog" 가 출력됩니다.


따라서, 답안은 B 가 됩니다.


by kkikkodev 2015. 8. 28. 03:25