더북(TheBook)

모든 Employee 객체는 인스턴스 변수인 id를 각자 보유한다. 하지만 lastId 변수는 오직 하나다. lastId 변수는 클래스의 특정 인스턴스가 아니라 클래스 자체에 속한다.

Employee 객체를 생성하면 공유된 lastId 변수가 증가하고, 인스턴스 변수 id가 증가한 값으로 설정된다. 따라서 모든 직원 객체가 유일한 id 값을 얻는다.

icon Caution

여러 스레드가 Employee 객체를 동시에 생성하면 이 코드는 제대로 작동하지 않는다. 10장 병행 프로그래밍에서 이 문제를 해결하는 방법을 자세히 설명한다.


Note ≣

왜 개별 인스턴스가 아니라 클래스에 속하는 변수를 ‘정적(static)’이라고 하는지 궁금할 것이다. 이 용어는 C++에서 유래한 의미 없는 유물이다. C++는 그저 더 적절한 용어를 제시하지 못해 C 언어에서 관련 없는 키워드를 따온 것뿐이다. 의미를 더 적절하게 드러내는 용어는 ‘클래스 변수’다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.