해결된 질문
작성
·
185
0
static 사용하는 도중에 궁금한 점이 있습니다.
일단 제가 수강하면서 작성한 코드입니다.
void main() {
Employee seulgi = Employee('seulgi');
Employee chocho = Employee('chocho');
seulgi.printNameAndBuilding();
chocho.printNameAndBuilding();
Employee.building = 'OTO';
seulgi.printNameAndBuilding();
chocho.printNameAndBuilding();
Employee.printBuilding();
}
class Employee {
//static 은 instance에 귀속되지 않고 class에 귀속된다.
static String? building;
final String name;
Employee(
this.name,
);
void printNameAndBuilding() {
print('My name is $name. $building is my workplace');
}
static void printBuilding() {
print('im working on $building');
}
}
여기서 static을 사용할떄 Employee.building을 사용했는데
building은 constructor안에서 사용되지 않았으니 class같은데 맞나요?
그렇다면 class안에서 선언된 name도 static처럼 값을 바꿔도 되나요?
답변 1
1
안녕하세요.
값을 바꿔도 되고 안되고의 차이는 static과는 관련 없습니다. 위 예제에서 name을 한번 선언 후 바꿀 수 없는 이유는 name이 final로 선언되어있기 때문입니다. 반대로 building은 final이나 const로 선언돼있지 않기때문에 값 변경이 가능합니다.
그러니 질문에 답변드리면 building은 static으로 선언되었기 때문에 클래스 자체에 귀속되는 속성입니다.
인스턴스의 변수로 선언된 name은 값을 바꿀 수 없습니다. (final로 선언하셔서. static과 관련 x)
어제 수강했던 내용을 까먹고 있엇네요..