인프런 커뮤니티 질문&답변

code11님의 프로필 이미지
code11

작성한 질문수

[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

static

해결된 질문

작성

·

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)

code11님의 프로필 이미지
code11
질문자

어제 수강했던 내용을 까먹고 있엇네요..

code11님의 프로필 이미지
code11

작성한 질문수

질문하기