static 키워드
- 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야 하는 것에 static을 쓴다.
- 인스턴스를 생성하면 각 인스턴스들은 서로 독립적이기 때문에 서로 다른 값을 유지한다.
- 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static을 붙인다.
- static이 붙은 멤버변수는 인스턴스를 생성하지 않아도 사용 가능하다.
- Person.name
- static이 붙은 메서드에서는 인스턴스 변수(static이 붙지 않은 변수)를 사용할 수 없다.
- static이 붙은 메서드는 인스턴스 생성 없이 호출 가능한 반면 인스턴스 변수는 인스턴스를 생성해야 존재하기 때문이다.
- 반대로 인스턴스 변수나 인스턴스 메서드에서는 static이 붙은 멤버들을 사용하는 것이 언제나 가능하다.
- 메서드 내에서 인스턴스 변수를 사용하지 않는다면 static을 붙이는 것을 고려한다.
- 메서드의 작업 내용중 인스턴스 변수를 필요로 한다면 static을 붙일 수 없다.
클래스 설계 시 static의 사용 지침
- 클래스의 멤버변수 중 모든 인스턴스에 공통된 값을 유지해야하는 것이 있는지 살펴보고 있으면, static을 붙인다.
- 작성한 메서드 중 인스턴스 변수를 사용하지 않는 메서드에 대해 static을 붙일 것을 고려한다.
일반적으로 인스턴스 변수와 관련된 작업을 하는 메서드는 인스턴스메서드이고, static 변수와 관련된 작업을 하는 메서드는 클래스 메서드라고 보면 된다.