관련 이론 및 문법

(instanceof 참고)

http://kkikkodev.tistory.com/438


문제 의도

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


답안

B


풀이 방법

주어진 소스코드를 살펴보면, Fish 인터페이스가 있고, Perch 클래스는 Fish 인터페이스를 상속하고 있고, Walleye 클래스는 Perch 클래스를 상속하고 있습니다. 또 Bluegill 클래스가 있습니다. main 메소드를 보면 먼저 Walleye 객체를 생성하여 Fish 형 인스턴스 변수 f 로 가리키고 있습니다. 그리고 Walleye 객체를 생성하여 Walleye 형 인스턴스 변수 w 로 가리키고 있고, Bluegill 객체를 생성하여 Bluegill 형 인스턴스 변수 b 로 가리키고 있습니다. 


그 다음 f instanceof Perch 를 통해 f 가 가리키는 객체가 Perch 클래스인지 체크합니다. f 가 가리키는 객체는 Walleye 클래스형인데 Walleye 클래스는 Perch 클래스를 부모 클래스로 상속하고 있으므로 true 가 나오게 되어 화면에 "f-p " 가 출력됩니다.


w instanceof Fish 를 통해 w 가 가리키는 객체가 Fish 인터페이스인지 체크합니다. w 가 가리키는 객체는 Walleye 클래스형인데 Walleye 클래스는 Perch 클래스를 상속하고 있고 Perch 클래스는 Fish 인터페이스를 상속하고 있으므로 true 가 나오게 되어 화면에 "w-f " 가 출력됩니다.


마지막으로 b instanceof Fish 를 통해 b 가 가리키는 객체가 Fish 인터페이스인지 체크합니다. b 가 가리키는 객체는 Bluegill 클래스형인데 이는 Fish 인터페이스와는 상관없으므로 false 가 나오게 됩니다.


따라서 출력 결과는 "f-p w-f" 가 되어 답안은 B 가 됩니다.


by kkikkodev 2016. 11. 13. 10:41