인스턴스 변수
"오늘의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++
cppstruct 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
pythonclass 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