static
Dart에서 static
키워드는 클래스의 인스턴스가 아닌 클래스 자체에 속하는 변수나 메서드를 정의할 때 사용됩니다. 이를 통해 클래스의 모든 인스턴스가 공유하는 데이터를 저장하거나 클래스 수준의 함수를 제공할 수 있습니다.
class MathUtils {
// 정적 변수
static const double pi = 3.14159;
// 정적 메서드
static int add(int a, int b) {
return a + b;
}
static double calculateCircleArea(double radius) {
return pi * radius * radius;
}
}
void main() {
// 정적 변수와 메서드는 클래스 이름을 통해 직접 접근 가능
print('Pi: ${MathUtils.pi}');
print('Sum: ${MathUtils.add(2, 3)}');
print('Circle Area: ${MathUtils.calculateCircleArea(5)}');
}
class Counter {
int count = 0; // 인스턴스 변수
// 인스턴스 메서드
void increment() {
count++;
}
// 정적 메서드
static int add(int a, int b) {
return a + b;
}
}
void main() {
// 정적 메서드는 클래스 이름으로 호출
print('Add: ${Counter.add(3, 4)}');
// 인스턴스 메서드는 객체를 통해 호출
Counter counter = Counter();
counter.increment();
print('Counter: ${counter.count}');
}
정적 변수와 메서드는 클래스 이름을 통해 접근: 정적 변수와 메서드는 클래스의 인스턴스를 생성하지 않고도 ClassName.variableName
또는 ClassName.methodName()
형식으로 접근할 수 있습니다.
정적 메서드 내에서 인스턴스 변수 접근 불가: 정적 메서드는 클래스 자체에 속하므로, 인스턴스 변수에 접근할 수 없습니다. 인스턴스 변수를 조작하려면 인스턴스 메서드를 사용해야 합니다.
class 내부에만 사용 가능: static은 class 내부에만 사용이 가능합니다.