모두CBT

23-3아래 Java 프로그램을 컴파일하면 오류가 한 곳에서 발생한다.… | 2023년 정보처리기사실기 3회차 기출문제 상세 페이지

6

23-3

아래 Java 프로그램을 컴파일하면 오류가 한 곳에서 발생한다. 오류가 나는 행의 번호를 적으시오.

 1 | class Counter {
 2 |     private int count;
 3 |     public Counter(int start) {
 4 |         count = start;
 5 |     }
 6 |     public void up() {
 7 |         count++;
 8 |     }
 9 |     public static int peek() {
10 |         return count;
11 |     }
12 | }
13 | 
14 | public class Main {
15 |     public static void main(String[] args) {
16 |         Counter c = new Counter(3);
17 |         c.up();
18 |     }
19 | }
해설

10


[해설]

10행의 static 메서드 peek()가 인스턴스 변수 count를 참조해서 컴파일 오류가 난다.

static 메서드는 객체 없이 클래스 이름으로 호출되므로, 어느 객체의 count인지 정할 수 없다. javac는 "non-static variable count cannot be referenced from a static context"를 낸다.

peek()에서 static을 빼거나 count를 static 필드로 바꾸면 해결된다. 7행의 count++는 인스턴스 메서드 안이므로 문제없다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.