충분히 쌓여가는
6.9 인스턴스 멤버 - 인스턴스 멤버 사용 불가 본문
정적 메소드와 정적 블록은 객체가 없어도 실행된다는 특징 때문에
내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다
또한 객체 자신의 참조인 this도 사용할 수 없다
public class ClassName {
int field1;
void method1() {...}
//정적 필드와 메소드 선언
static int field2;
static void method2 { ... }
//정적 블록 선언
static {
field1 = 10; //컴파일 에러
method1(); //컴파일 에러
field2 = 10;
method2();
}
//정적 메소드 선언
staitc void method3() {
this.filed1 = 10; //컴파일 에러
this.method1(); //컴파일 에러
field2 = 10;
method2();
}
}
정적 메소드와 정적 블록에서 인스턴스 멤버를 사용하고 싶다면 객체를 먼저 생성하고 참조 변수로 접근해야 한다
static void method3() {
//객체 생성
ClassName obj = new ClassName();
//인스턴스 멤버 사용
obj.field1 = 10;
obj.method1();
}
main() 메소드도 동일한 규칙이 적용된다
main() 메소드도 정적 메소드이므로 객체 생성 없이 인스턴스 필드와 인스턴스 메소드를 main()에서 바로 사용할 수 없고
객체를 생성한 다음 참조 변수로 접근해야 한다
'이것이 자바다 > 06 클래스' 카테고리의 다른 글
6.14 Getter와 Setter (0) | 2024.04.01 |
---|---|
6.13 접근 제한자 - 생성자/필드/메소드의 접근 제한 (0) | 2024.04.01 |
6.9 인스턴스 멤버 - 정적 블록 {} (0) | 2024.04.01 |
6.9 인스턴스 멤버 - 정적 멤버 (0) | 2024.04.01 |
6.9 인스턴스 멤버 - this (0) | 2024.04.01 |