• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

static

22.06.23 14:06 작성 조회수 130

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

질문자

2022.06.23

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