static

하요·2024년 7월 2일
0
post-thumbnail

Dart에서 클래스 수준의 기능 제공하기: static

Dart에서 static 키워드는 클래스의 인스턴스가 아닌 클래스 자체에 속하는 변수나 메서드를 정의할 때 사용됩니다. 이를 통해 클래스의 모든 인스턴스가 공유하는 데이터를 저장하거나 클래스 수준의 함수를 제공할 수 있습니다.

주요 개념

  • 정적 변수 (Static Variable): 클래스의 모든 인스턴스가 공유하는 변수입니다. 클래스 자체에 속하며, 인스턴스를 생성하지 않고도 접근할 수 있습니다.
  • 정적 메서드 (Static Method): 클래스 자체에 속하는 메서드입니다. 클래스의 인스턴스를 생성하지 않고도 호출할 수 있습니다.

주요 사용 사례

  • 클래스 수준의 데이터: 인스턴스 간에 공유되어야 하는 데이터를 저장할 때 사용합니다.
  • 유틸리티 메서드: 객체의 상태와 무관하게 동작하는 기능을 제공하는 메서드를 정의할 때 사용합니다.

주요 활용도

  • 공유 데이터 저장: 모든 인스턴스가 접근할 수 있는 데이터를 저장합니다.
  • 클래스 수준에서 함수 제공: 인스턴스를 생성하지 않고도 호출할 수 있는 함수를 제공합니다.
  • 메모리 절약: 정적 메서드와 변수는 클래스 수준에서 관리되므로 메모리 사용을 최적화할 수 있습니다.

코드 예제

정적 변수와 메서드 사용

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 내부에만 사용이 가능합니다.

관련 자료

profile
flutter 개발자(진)

0개의 댓글