👉인스턴스 생성 시마다 1씩 값이 증가.
👉클래스 변수는 인스턴스 내에 존재하는 변수가 아니라 ‘어떠한 인스턴스에도 속하지 않는 상태로 메모리 공간에 딱 하나만 존재하는 변수’이다.
👉클래스 변수도 ‘접근 수준 지시자’의 규칙을 그대로 적용
👉클래스 내부 접근 - 변수의 이름을 통해 직접 접근
👉클래스 외부 접근 - 클래스 또는 인스턴스의 이름을 통해 접근(AccessWay.num++; way.num++;)
👉NumberPrinter.showInt(20); —> 인스턴스 np 생성 이전에 호출
class AAA {
int num = 0;
static void addNum(int n) {
num += n; // 인스턴스 변수 접근 불가
}
}
- 인스턴스 변수(int num = 0;)는 인스턴스에 속한다.
인스턴스가 생성이 되어야 메모리 공간에 존재하게 된다.
반면 클래스 메소드는 인스턴스 생성 이전부터 호출이 가능하다.
- ❤️🔥❤️🔥클래스 메소드는 인스턴스에 속하지 않으므로 인스턴스 변수에 접근이 불가능하다.
- 같은 이유로 클래스 메소드는 인스턴스 메소드의 호출도 불가능하다.
------------------------------------------------------------------------
class AAA {
static int num = 0;
static void showNum() {
System.out.println(num); // 클래스 변수 접근 가능
}
static void addNum(int n) {
num += n; // 클래스 변수 접근 가능
showNum(); // 클래스 메소드 호출 가능
}
}