static은 정적 변수를 선언할 때 사용된다.
ai에 따르면 static이란,
'static'은 프로그래밍에서 주로 사용되는 키워드로, 한 번 할당되면 프로그램 실행 동안 값을 유지하는 변수나 메소드를 지정하는데 사용됩니다.
'static' 키워드를 사용하면, 프로그램 전체에서 해당 변수나 메소드를 공유하게 됩니다. 이는 특히 데이터를 공유하거나, 동일한 상태를 유지해야 하는 경우에 유용합니다. 예를 들어, 모든 인스턴스에서 공통으로 사용되는 카운터 변수를 만드는 데 'static' 키워드를 사용할 수 있습니다.
클래스 안에서 static을 사용하면 해당 변수나 메서드는 해당 class 에 저장되는게 아니라 다른곳에 저장된다. 코드만 클래스 안에 있다. 특히 데이터를 공유하거나 동일한 상태를 유지해야 하는 경우에 유용하다는데, 공유자원이라고 생각하면 된다.
static을 사용하지 않고 top level 변수를 사용하여 class 밖에 변수를 선언하고 초기화할 수도 있다.
같은 클래스에서 작성 해도, 각각의 인스턴스에서는 별도의 필드를 가지지만 static을 사용하면 필드를 공유하게 된다.
static에 접근하는 방법을 알아보도록 하자.'클래스명.정적변수(함수)이름'으로 접근한다. 모두 생략하고 간략하게 예시를 보자면
class Class {
static int hpMax = 50;
}
void main() {
int maxHealth = Class.hpmax;
print(maxHealth);
}
이렇게 할 수 있다.
간단하게 static의 예시를 살펴보자
class Cleric {
static int? hpMax;
static int? mpMax;
String name;
int mp = 50;
int hp = 50;
Cleric(this.name, this.mp, this.hp);
printinfo() {
print('내 이름은 $name,mp는 $mp, hp는 $hp 최대체력은 $hpMax');
}
}
void main() {
Cleric Kong = Cleric('Kong', 10, 530);
Cleric King = Cleric('King', 20, 40);
Kong.printinfo();
King.printinfo();
Cleric.hpMax = 50;
Kong.printinfo();
King.printinfo();
}
인스턴스를 생성하고 출력 함수를 부르면 각각의 정보를 가진 결과가 출력되지만 hpMax 공유자원을 부르면 두 인스턴스 모두 동일하게 해당 값이 출력된다.
정적 메소드 안에서 접근 할 수 있는 변수는 정적멤버만 가능하다. 나머지는 접근불가하다.
잘 보고 갑니다