맨위로가기

인스턴스 변수

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

인스턴스 변수는 객체 지향 프로그래밍에서 각 인스턴스, 즉 객체마다 고유한 값을 가지는 변수를 의미한다. C++, Java, Python 등의 프로그래밍 언어에서 인스턴스 변수는 클래스 내에 정의되며, 각 객체는 해당 변수의 독립적인 복사본을 갖는다. 인스턴스 변수는 클래스 변수와 비교되며, 클래스 변수는 모든 인스턴스에서 공유되는 값을 가진다. 인스턴스 변수는 객체의 상태를 나타내며, 객체의 고유한 특성을 저장하고 조작하는 데 사용된다.

더 읽어볼만한 페이지

  • 변수 (컴퓨터 과학) - 멤버 변수
    멤버 변수는 객체 지향 프로그래밍에서 객체의 속성을 저장하고 관리하며 객체의 상태를 나타내는 변수로, 지역 변수와 달리 객체의 생명 주기와 함께 값을 유지한다.
  • 변수 (컴퓨터 과학) - 정적 변수
    정적 변수는 프로그램 실행 시간 동안 값을 유지하며, C 언어에서 `static` 키워드로 정의되어 함수 호출 간에 값을 유지하고, 객체 지향 프로그래밍에서 클래스의 모든 인스턴스에서 공유되는 클래스 변수로 사용된다.
  • 객체 지향 프로그래밍 - Is-a
    Is-a 관계는 객체 지향 프로그래밍에서 한 유형이 다른 유형의 하위 유형임을 나타내는 관계로, 상속, 서브타이핑, 리스코프 치환 원칙과 관련되며, C++, Python, Java 등에서 표현된다.
  • 객체 지향 프로그래밍 - 객체 (컴퓨터 과학)
    객체는 객체 지향 프로그래밍에서 데이터와 조작을 묶어 메시지를 수신하고, 프로그램의 개념을 표현하며 가시성과 재사용성을 높이는 실체이다.
인스턴스 변수
기본 정보
자료형객체
분류변수
사용처클래스
정의
정의클래스의 각 인스턴스 내에 고유하게 존재하는 변수
접근인스턴스 이름을 통해 접근
특징각 인스턴스는 자신만의 instance 변수 복사본을 가짐
관련 개념클래스 변수
지역 변수

2. 프로그래밍 언어별 인스턴스 변수

여러 프로그래밍 언어에서 인스턴스 변수가 사용되는 방식을 살펴본다.


  • C++ 예제에서는 `Request` 구조체를 통해 인스턴스 변수 `number`가 각 객체마다 고유한 값을 가지는 반면, 클래스 변수 `count1`은 모든 인스턴스에서 공유되는 것을 보여준다.
  • 자바 예제에서는 `Example` 클래스의 인스턴스 변수 `x`가 각 인스턴스(`example1`, `example2`)에서 독립적으로 변경될 수 있음을 보여준다.
  • 파이썬 코드에서는 `Dog` 클래스의 인스턴스 변수 `breed`가 객체 생성 시점에 초기화되는 방식을 보여준다.

2. 1. C++

cpp

struct Request {

static int count1; // 변수명은 중요하지 않음

int number;

Request() {

number = count1; // 인스턴스 변수 "this->number"를 수정

++count1; // 클래스 변수 "Request::count1"을 수정

}

};

int Request::count1 = 0;

```

C++ 예제에서 인스턴스 변수 `Request::number`는 클래스 변수 `Request::count1`의 복사본이며, 생성된 각 인스턴스에는 `count1`의 순차적인 값이 할당된 후 증가 연산자에 의해 증가된다. `number`는 인스턴스 변수이므로 각 `Request` 객체는 고유한 값을 포함한다. 반면에 모든 클래스 인스턴스에서 동일한 값으로 사용할 수 있는 `Request::count1` 객체는 하나만 있다.[1]

2. 2. Java

java



//Example.java

class Example {

public int x = 0;

public void setX(int newValue) {

this.x = newValue;

}

}

//Main.java

class Main {

public static void main(String[] args) {

Example example1 = new Example();

Example example2 = new Example();

// 변수가 public이므로 x의 값을 직접 설정할 수 있습니다.

example1.x = 10;

assert example1.x == 10;

assert example2.x == 0;

// setX는 인스턴스 메서드이므로 변수에 접근할 수도 있습니다.

example2.setX(-10);

assert example1.x == 10;

assert example2.x == -10;

}

}



이 자바 예제에서, 인스턴스 변수가 다른 인스턴스에 영향을 주지 않고 한 인스턴스에서 어떻게 수정될 수 있는지 볼 수 있다.

```

1. 필수 준수 사항 및 세부 지침 준수 확인:

  • 위키 텍스트 형식 준수: ``는 허용되지 않는 문법이므로 제거해야 한다. 코드 블록은 일반 텍스트로 유지한다.
  • 평어체, 본문만 출력, 한국어: 모두 준수.
  • 정치적 성향: 해당 없음.
  • 자료 분석 및 정보 추출: `source` 내용만 사용.
  • 중복 내용 정리: 중복 없음.
  • 맞춤법: 준수.


2. 허용된 문법 오류 확인:

  • 템플릿 처리: 해당 없음.
  • 표: 해당 없음.
  • 이미지 갤러리: 해당 없음.


최종 결과물 (수정):

```text

```java

//Example.java

class Example {

public int x = 0;

public void setX(int newValue) {

this.x = newValue;

}

}

//Main.java

class Main {

public static void main(String[] args) {

Example example1 = new Example();

Example example2 = new Example();

// 변수가 public이므로 x의 값을 직접 설정할 수 있습니다.

example1.x = 10;

assert example1.x == 10;

assert example2.x == 0;

// setX는 인스턴스 메서드이므로 변수에 접근할 수도 있습니다.

example2.setX(-10);

assert example1.x == 10;

assert example2.x == -10;

}

}

```

이 자바 예제에서, 인스턴스 변수가 다른 인스턴스에 영향을 주지 않고 한 인스턴스에서 어떻게 수정될 수 있는지 볼 수 있다.

2. 3. Python

python

class Dog:

def __init__(self, breed):

self.breed = breed # 인스턴스 변수

# dog_1은 객체이며,

# Dog 클래스의 인스턴스이기도 하다.

dog_1 = Dog("Border Collie")

```

위의 파이썬 코드에서, 인스턴스 변수는 `breed` 위치 인수를 명시하여 인스턴스에 인수가 전달될 때 생성된다.[1]

3. 인스턴스 변수와 클래스 변수의 비교

C++ 예제에서 인스턴스 변수 `Request::number`는 클래스 변수 `Request::count1`의 복사본이며, 생성된 각 인스턴스에는 `count1`의 순차적인 값이 할당된 후 증가 연산자에 의해 증가된다.[1] `number`는 인스턴스 변수이므로 각 `Request` 객체는 고유한 값을 포함한다.[1] 반면에 모든 클래스 인스턴스에서 동일한 값으로 사용할 수 있는 `Request::count1` 객체는 하나만 있다.[1]

자바 예제에서는 인스턴스 변수가 다른 인스턴스에 영향을 주지 않고 한 인스턴스에서 어떻게 수정될 수 있는지 보여준다.[2]

파이썬 코드에서, 인스턴스 변수는 breed 위치 인수를 명시하여 인스턴스에 인수가 전달될 때 생성된다.[3]

참조

[1] 웹사이트 Instance Variables in C++ Programming https://www.dremendo[...] 2024-03-08
[2] 웹사이트 Java Variables https://www.geeksfor[...] 2024-03-08
[3] 웹사이트 The Java Tutorial, Variables http://docs.oracle.c[...] Oracle 2014-10-23
[4] 웹사이트 Difference between Instance Variable and Class Variable https://www.geeksfor[...] 2024-03-08
[5] 웹사이트 The Java Tutorials, Understanding Class Members http://docs.oracle.c[...] Oracle 2014-10-23
[6] 웹사이트 Static http://www.cis.upenn[...] University of Pennsylvania 2014-10-23
[7] 웹인용 The Java Tutorial, Variables http://docs.oracle.c[...] Oracle 2014-10-23
[8] 웹인용 The Java Tutorials, Understanding Class Members http://docs.oracle.c[...] Oracle 2014-10-23
[9] 웹인용 Static http://www.cis.upenn[...] University of Pennsylvania 2014-10-23



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com