# 메소드 스코프 리뷰 #### CODE <a class='btn btn-default' href='/codes/74533'>Link</a> ``` public class MethodScope { public static void main(String[] args) { // main 메소드의 지역변수 score public int score = 88; System.out.printf("score = %d in main()\n", score); // Record 클래스의 메소드 수행 Record.foo(score); // main 메소드의 지역변수 score 출력 System.out.printf("score = %d in main()\n", score); } } class Record { // 클래스 메소드 public static void foo(int score) { // printMinus10 메소드의 파라미터 score의 값을 10 감소 score -= 10; // printMinus10 메소드의 파라미터 score의 값을 출력 System.out.printf("score = %d in foo()\n", score); } } ``` #### INPUT ``` ``` #### OUPUT ``` /root/var/tmp/2022_10_02_06_57_27_edfcdd8c/MethodScope.java:4: error: illegal start of expression public int score = 88; ^ 1 error ``` 아래 질문을 읽고 생각을 해보았습니다 메인 클래스에서 처음부터 public int score 로 선언하여 전역변수로 사용하면 클래스 메소드를 사용할 때도 같은 주소를 참조하여 질문자님이 원하신 대로 될 줄 알았는데 public int score라고 선언하는 것은 문법에 맞지 않다고 뜨네요 .. public이 필드 앞에도 붙을 수 있는 것 아닌가요 ? static을 붙여보아도 에러가 뜨는데 왜 에러가 뜨는지 이해가 되지 않아 질문 드립니다 .. !
질문 내용의 score 변수는 지역변수입니다. 따라서 public과 static을 적용할 수 없습니다.