인스턴스(instance)
이전 글 참고
static electricity: 정전기
객체(instance)에 속하지 않고, 클래스(Class) 자체에 속하는 변수를 만들거나 함수를 정의할 때 사용
class Calculator {
// static 변수 선언
static int calculationCount = 0;
// static 메서드
static void incrementCount() {
calculationCount++;
}
// 인스턴스 메서드
void add(int a, int b) {
incrementCount();
print('Result: ${a + b}');
}
}
void main() {
Calculator calc1 = Calculator();
calc1.add(3, 4); // Result: 7
Calculator calc2 = Calculator();
calc2.add(10, 20); // Result: 30
// static 변수는 클래스 차원에서 접근 가능
print('Total calculations: ${Calculator.calculationCount}');
// Total calculations: 2
}
Calculator
클래스를 이용하여 calc1
, calc2
인스턴스 생성calc1
, calc2
에 정의된 add()
메서드 호출 시 마다 incrementCount()
메서드 호출calc1
, calc2
는 서로 다른 인스턴스지만 calculationCount
는 둘 다 동일한 값을 공유class Calculator {
// static 변수 선언
static int calculationCount = 0;
// static 메서드
static void incrementCount() {
calculationCount++;
}
// 인스턴스 메서드
void add(int a, int b) {
incrementCount();
print('Result: ${a + b}');
}
}
void main() {
Calculator calc1 = Calculator();
calc1.add(3, 4); // Result: 7
calc1.incrementCount(); // error 발생
Calculator calc2 = Calculator();
calc2.add(10, 20); // Result: 30
// static 변수는 클래스 차원에서 접근 가능
print('Total calculations: ${Calculator.calculationCount}');
// Total calculations: 2
}
calc1
인스턴스는 Calculator
클래스를 이용하여 생성되었지만 Static 메서드인 incrementCount()
는 호출 불가class Calculator {
// static 변수 선언
static int calculationCount = 0;
// static 메서드
void incrementCount() {
calculationCount++;
}
// 인스턴스 메서드
void add(int a, int b) {
incrementCount();
print('Result: ${a + b}');
}
}
void main() {
Calculator calc1 = Calculator();
calc1.add(3, 4); // Result: 7
calc1.incrementCount(); // 정상
Calculator calc2 = Calculator();
calc2.add(10, 20); // Result: 30
// static 변수는 클래스 차원에서 접근 가능
print('Total calculations: ${Calculator.calculationCount}');
// Total calculations: 3
}
calc1
인스턴스에서 인스턴스 메서드인 incrementCount()
호출 가능 static 변수인 calculations
값 1 상승