클래스 변수
Class variable클래스가 있는 객체 지향 프로그래밍에서 클래스 변수는 클래스의 인스턴스 [1][2][3][4][5]수에 관계없이 단일 복사본이 존재하는 클래스에 정의된 변수입니다.
클래스 변수는 인스턴스 변수가 아닙니다.클래스 속성(또는 클래스 속성, 필드 또는 데이터 멤버)의 특수한 유형입니다.인스턴스와 클래스 멤버 간의 동일한 이분법이 메서드('멤버 함수')에도 적용됩니다.클래스는 인스턴스 메서드와 클래스 메서드를 모두 가질 수 있습니다.
정적 멤버 변수 및 정적 멤버 함수
일부 언어에서 클래스 변수 및 클래스 메서드는 동적 디스패치가 아닌 정적 해결 또는 컴파일 시(클래스 전체에 대해 1회, 정적 변수로서) 해당 메모리가 정적 할당되며 실행 시(개체의 인스턴스화 시마다) 동적으로 할당되지 않습니다.다만, 그 외의 경우는, 어느쪽인가 또는 양쪽이 다이나믹합니다.예를 들어 클래스를 동적으로 정의할 수 있는 경우(실행 시) 클래스가 정의될 때 이러한 클래스의 클래스 변수가 동적으로 할당되며 일부 언어에서는 클래스 메서드도 동적으로 디스패치됩니다.
따라서 일부 언어에서 정적 멤버 변수 또는 정적 멤버 함수는 "class variable" 또는 "class function"과 동의어로 사용되거나 "class function" 대신 사용됩니다. 그러나 이들은 언어 간에 동의어가 아닙니다.이러한 용어는 Java, C# 및 C++에서 일반적으로 사용되며 클래스 변수 및 클래스 메서드는 키워드로 선언되며 스태틱멤버 변수 또는 스태틱멤버 함수라고 불립니다
예
구조 부탁한다 { 정적인 인트 세어보세요; 인트 번호; 요청 오브젝트 오브젝트() { 번호 = 세어보세요; // 인스턴스 변수 "this-> number" 를 변경합니다. ++세어보세요; // 클래스 변수 "Request::count"를 수정합니다. } }; 인트 부탁한다::세어보세요 = 0; 이 C++ 예에서는 클래스 변수가Request::count컨스트럭터에 대한 콜마다 증가하기 때문에Request::count는 항상 구성된 요청 수를 보유하고 있으며, 각 새 요청 개체에는 1개의 명령어가 할당됩니다.number순차적으로.부터count클래스 변수입니다.오브젝트는 1개뿐이에요Request::count; 이와는 대조적으로 각 요청 오브젝트에는 고유의 고유성이 있습니다.number들판.
또한 변수는Request::count는 1회만 초기화됩니다.
메모들
- ^ "The Java Tutorial, Variables". Retrieved 2010-10-21.
- ^ "The Java Tutorial, Understanding Instance and Class Members". Retrieved 2010-10-21.
- ^ "The Python Language Reference, Compound Statements". Retrieved 2010-10-21.
- ^ "Objective-C Runtime Reference". Apple Developer. Retrieved 1 April 2018.
- ^ a b "Class Variables in C#". Syntaxdb. Retrieved 1 April 2018.