인스턴스 변수

위키백과, 우리 모두의 백과사전.

클래스가 있는 객체 지향 프로그래밍에서 인스턴스 변수(instance variable)는 클래스(예: 멤버 변수)에 정의된 변수로, 이를 위해 각각의 인스턴스화된 클래스의 객체가 별도의 사본이나 인스턴스를 가지고 있다. 인스턴스 변수는 클래스 변수와 비슷하다.[1]

인스턴스 변수는 클래스 변수가 아니지만 유사점이 있다. 클래스 속성(클래스 프로퍼티, 필드, 데이터 멤버)의 일종이다. 인스턴스와 클래스 멤버 간에 동일한 이분법이 메소드(멤버 함수)에도 적용되며, 클래스는 인스턴스 메소드클래스 메소드를 둘 다 소유할 수 있다.

각 인스턴스 변수는 오브젝트의 소유 기간 동안 메모리에 상주한다.[2]

변수는 오브젝트가 자기 자신을 알고 있는 속성이다. 오브젝트의 모든 인스턴스들은 자신만의 인스턴스 변수의 사본을 가지고 있으며, 값이 객체마다 동일하다고 하더라도 그러하다. 하나의 객체 인스턴스는 다른 모든 인스턴스에 영향을 미치지 않고서도 인스턴스 변수들의 값을 바꿀 수 있다. 인스턴스 변수들은 메소드가 정적으로 선언되어 있지 않은 경우 모든 클래스 메소드들에 의해 사용될 수 있다.[3]

[편집]

struct Request {

    static int count1; // 변수 이름은 중요하지 않다
    int number;

    Request() {
        number = count1; // 인스턴스 변수 "this->number"를 수정한다
        ++count1; // 클래스 변수 "Request::count1"를 수정한다
    }

};

int Request::count1 = 0;

각주[편집]

  1. “The Java Tutorial, Variables”. 《docs.oracle.com》. Oracle. 2014년 10월 23일에 원본 문서에서 보존된 문서. 2014년 10월 23일에 확인함. 
  2. “The Java Tutorials, Understanding Class Members”. 《docs.oracle.com》. Oracle. 2014년 10월 11일에 원본 문서에서 보존된 문서. 2014년 10월 23일에 확인함. 
  3. Matuszek, David. “Static”. 《cis.upenn.edu》. University of Pennsylvania. 2014년 10월 23일에 원본 문서에서 보존된 문서. 2014년 10월 23일에 확인함.