JAVA
클래스 메소드 vs 인스턴스 메소드
devstep88
2023. 8. 9. 22:53
- 인스턴스 별로 동작해야 한다면 인스턴스 메소드
- static메소드는 객체 생성이나 유틸리티 관련에서 사용할 수 있다.
- 되도록이면 인스턴스 메소드를 사용한다.
필드(Field)
- 클래스가 가지고 있는 속성을 자바에서는 필드라고 부른다.
- 다른 언어에서는 멤버 변수라고도 한다.
- 필드는 어떤 키워드와 함께 사용하느냐에 따라 사용방법이 달라진다.
- static 키워드가 함께 사용되는 필드는 클래스 필드, 함께 사용되지 않는 필드는 인스턴스 필드라고 한다.
필드 선언 방법 : [접근제한자] [static] [final] 타입 필드명 [= 초기값];
- [] 은 생략가능하다.
- 접근제한자는 public, protected, private, 아무 것도 없는 경우(default)가 올 수 있다.
- 필드명은 식별자 규칙을 따름. 다만, 필드는 첫 글자는 소문자로 하는 것이 관례이다.
- 타입(type)은 기본형(char,short,long,byte,boolean,int,float,double)과 참조형(class, interface, array)가 올 수 있다.
- 초기값이 없을 경우 참조형인 경우 null, boolean인 경우 false, 나머지는 모두 0으로 초기화된다.
static 필드 = 클래스 변수
static 필드는 다른 필드와 달리 정적 메모리에 들어가 작동하여 같은 자리로 참조된다.
static 변수는 클래스명.변수명으로 하여 사용한다.
static 필드는 static 블록으로 초기화할 수 있다. -> main메소드 보다 static 블록이 먼저 실행된다.
클래스 메소드에서 인스턴스 필드, 인스턴스 메소드 사용 불가한 이유?
메모리에 생성되는 시점이 다르기 때문!!!
클래스 메소드가 실행되는 시점에는 인스턴스 필드가 메모리에 없으므로 사용불가능하다고 컴파일 오류 발생!