Static

Chiwoo Song·2024년 9월 19일
0

FlutterDart

목록 보기
2/2
post-thumbnail

인스턴스(instance)
이전 글 참고

static electricity: 정전기

Static


객체(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는 둘 다 동일한 값을 공유

인스턴스에서 Static 메서드 호출

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()는 호출 불가

Static 메서드에서 instance 메서드로 변경하여 호출

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 상승
profile
Shallow but broad knowledge

0개의 댓글