package test;
public class non_static
{
static int i = 10;
static void Hello()
{
System.out.println("Hello!");
}
public static void main(String[] args){
Hello();
i = 30;
}
}
자바를 공부중 "Cannot make a static reference to the non-static field" 라는 오류를 만났다.
주어진 코드에서 static int와 static void Hello()의 static을 제외하자 위와 같은 오류가 나왔다.
자바의 컴파일 순서는
1. 자바코드 컴파일
2. 클래스 파일 생성
3. 컴파일된 클래스 파일 실행 이다.
static 멤버가 먼저 컴파일이 되기 때문에, Hello 와 i 를 메인함수에서 컴파일 하려고 해도 static으로 선언되지 않은 메서드와 필드가 정의 자체가 되지 않았다. 따라서 오류가 발생할 시 해당 메서드나 필드를 static으로 바꿔주어야 실행이 가능하다.
'CS' 카테고리의 다른 글
브라우저 렌더링 과정 (google.com을 입력하면?) (0) | 2023.09.22 |
---|---|
MIPS-Instruction (0) | 2021.10.05 |
Overloading-오버로딩이란? (0) | 2021.09.29 |
자바 객체,클래스,메소드 (C와 비교) (0) | 2021.09.23 |
포인터 기초: Swap함수 (0) | 2021.09.21 |