관련 이론 및 문법

(static 참고)

http://kkikkodev.tistory.com/124


문제 의도

다음 보기 중, 참인 것을 두 개 고르는 문제입니다.


답안

B, C


풀이 방법

소스코드를 살펴보면, Foo 클래스가 정의되어 있고, 그 안에 alpha 라는 static 메소드와, beta 라는 non-static 메소드가 정의되어 있는 것을 볼 수 있습니다. 기본적으로, static 메소드의 호출은, 인스턴스명이 아닌, 클래스명으로 호출합니다. 따라서, alpha 메소드는 static 이기 때문에, Foo 객체를 new 로 생성할 필요 없이, Foo.alpha(); 문장을 통해서 alpha 메소드를 호출할 수 있습니다.


그리고, static 메소드 내에서는 non-static 메소드를 직접 호출할 수 없고, (객체를 new 로 생성해야지 호출할 수 있음) 반대로 non-static 메소드 내에서는 static 메소드를 직접 호출할 수 있습니다. (클래스명으로 접근해서 호출하는 것도 가능)


따라서, Foo.alpha(); 와 관련 있는 답안 B 와, non-static 메소드인 beta() 에서 직접 alpha() 를 호출할 수 있다는 의미인 답안 C 가 답안이 됩니다.


by kkikkodev 2016. 11. 14. 20:00