티스토리 뷰

728x90
반응형

필드(field)

 

필드는 클래스에 포함된 변수를 말한다.

 

이 변수는 또 세 가지로 나뉘는데,

 

  1. 클래스 변수(cv, class variable)
  2. 인스턴스 변수(iv, instance variable)
  3. 지역 변수(lv, local variable)

가 그것이다. 세 유형은 클래스 내에서 선언된 위치에 따라 한 번, static 키워드에 따라 또 한 번 나눠지는데,

 

간단히 예를 들면 다음과 같다.

 

class Example { //     => 클래스 영역
    int instanceVariable;      // 인스턴스 변수
    static int classVariable;  // 클래스 변수(static 변수, 공유변수)

    void method() { // => 메서드 영역
        int localVariable = 0; // 지역 변수({}블록 안에서만 유효)
    }
}

 

위 변수들 중, 인스턴스 변수와 클래스 변수는 클래스 영역에서 선언되었기 때문에 멤버 변수라고 불린다.

 

이어서 멤버 변수는 static 키워드의 유무에 따라 각각 클래스 변수, 인스턴스 변수로 나뉜다.

 

마지막으로 메서드 영역에 선언된 변수를 지역 변수라고 부른다.

 

  • 인스턴스 변수

인스턴스 변수는 인스턴스가 가진 개별적 속성을 저장하기 위해 사용되며, 인스턴스를 생성하는 new 키워드와 함께 만들어진다.

 

자동차로 치자면 모델명, 색깔, 생산회사 등이 있을 것이다.

 

변수를 직접적으로 초기화하지 않더라도 자동 초기화된다.

 

힙 메모리 영역에 저장된다.

 

  • 클래스 변수

클래스 변수는 인스턴스들이 가진 공통된 속성을 저장하기 위해 사용되며, static 키워드를 통해 선언한다.

 

자동차로 치자면 바퀴의 수, 문의 개수 등이 있을 것이다.

 

클래스 변수의 특징은, 인스턴스 변수와 달리 인스턴스를 생성하지 않고도 호출해 사용할 수 있다.

 

위의 코드를 예로 들어 사용법은 Example.classVariable이다.

 

역시 변수를 직접적으로 초기화하지 않더라도 자동 초기화된다.

 

클래스 영역에 저장된다.

 

  • 지역 변수

지역변수는 메서드 영역에 선언하며 그 메서드의 영역 안에서만 사용할 수 있다.

 

멤버 변수와 다르게 메서드 종료와 동시에 삭제되는 특징이 있다.

 

변수를 직접 초기화하지 않으면 출력 시 오류가 발생한다.

 

스택 메모리 영역에 저장된다.

 

 

굵은 글씨로 강조한 부분은 아래 그림을 참조하면 된다.

 


 

static 키워드

 

static 키워드는 클래스의 멤버(필드, 메서드, 내부 클래스)에 사용하는 키워드이다.

 

키워드가 붙어있는 멤버를 정적 멤버(static member)라 부름으로써 인스턴스 멤버와 구분한다.

 

위의 클래스 변수의 특징에 적은 바와 같이 static멤버들은 인스턴스의 생성 없이도 사용이 가능하다.

 

또한 static 메서드의 경우에도 클래스 변수와 비슷하게 인스턴스들의 공통된 기능을 담당한다.

 

주의할 점은 static 메서드의 경우 인스턴스 변수나 인스턴스 메서드를 사용할 수 없다는 점인데,

 

정적 메서드가 호출되었을 때 인스턴스가 존재하지 않을 가능성이 있기 때문이라고 한다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함