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++는 인스턴스 메서드 안이므로 문제없다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.