static 변수가 선언된 클래스 내에서는 이름만으로 직접 접근 가능
private 으로 선언되지 않으면 클래스 외부에서도 접근 가능
접근 수준 지시자가 허용하는 범위에서 접근 가능
클래스 또는 인스턴스의 이름을 통해 접근
way.num++; 과 같이 인스턴스 이름으로 접근하는 경우는 static변수에 접근하는지, 인스턴스 변수에 접근하는지 저 문장만 보고 파악하기 어렵다.
하지만 AccessWay.num++; 처럼 클래스 이름으로 접근하면 static변수에 접근한다는 것을 문장만 보고도 알 수 있다.(클래스 이름은 첫 문자 대문자이기 때문에)
그래서 인스턴스 이름으로 static변수에 접근하는 것 보다는 클래스 이름으로 접근하는 것이 더 좋은 방법이다.
main(){
Baby cnt1 = new Baby();
Baby cnt2 = new Baby();
Baby cnt3 = new Baby();
}
출력
Baby 생성: 1
Baby 생성: 2
Baby 생성: 3
class Baby {
static int instNum = 0; //static : 따로 먼저 메모리에 올림
// 공유변수 = 정적변수 = 클래스 변수
InstCnt(){
instNum++;
System.out.println("Baby " + instNum);
}
}