본문 바로가기

SW 개발 공부/실수 기록

Static이 아닌 필드, 메서드 또는 속성 '~~'에 개체 참조가 필요합니다.

문제상황

static 메서드 내에 클래스 필드를 참조하였더니 위의 에러 메시지 출력됨.

 

결론

Static 메서드는 클래스로부터 객체를 생성하지 않고 직접 호출 가능하다.

따라서 static 메서드 내부에서는 클래스의 필드를 참조해서는 안된다.

 

원인

"static 메서드 내부에서 클래스의 필드를 참조해서는 안되는 이유"

 

- 필드를 참조하기 위해선 클래스 객체가 필요하다.

- static 메서드는 클래스 객체를 참조하여 호출되지 않기에 클래스 객체가 없어 필드를 참조할 수 없다.

 

- 클래스 필드는 클래스 객체가 생성된 이후, 객체를 통하여 해당 필드를 참조할 수 있다.

- static 메서드는 클래스 객체를 생성하지 않은 상태로 사용됨으로 참조 할 수 없는것이다.