정적 멤버 변수
클래스는 개체의 상위 개념

개체의 개수를 알고 싶을 때 개체보다 상위 개념인 클래스 단위의 작업이 필요함

개체의 멤버 변수는 다른 개체의 정보를 반영할 수 없음

정적 멤버 변수

UML에서 정적 메서드와 마찬가지로 밑줄

개체를 생성할 때 호출되는 함수는 생성자 생성자를 호출할 때 정적 변수에 값을 더하면 개체의 개수를 셀 수 있음
this 붙여도, 클래스 이름을 붙여도 상관 없음
- 내부적으로 범위로 탐색
- 생성자 블록에서
numCreated지역 변수가 없기 때문에 상위 블록으로 올라감- 상위 블록은 클래스 범위
- 클래스 범위에서
numCreated정적 변수를 찾고 값을 증가
- 생성자 블록에서
아래와 같이 클래스 레벨에서 멤버 변수 선언을 할 때 static 멤버 변수와 그냥 멤버 변수의 이름이 같으면 컴파일 에러
It is a compile-time error for the body of a class to declare two fields with the same name.
modifier(static/final/접근 제어자 등)에 상관 없이, 클래스 본문 안의 모든 필드는 같은 namespace
public class Pig {
private int x;
static private int x; // COMPILE ERROR
static public int boom() {
return 0;
}
}